We have migrated the database from SQL Server 2008 R2 to SQL Server 2014 with the help of backup/restore method. Now my database in SQL Server 2014 and has compatibility level 100, I didn't change it to 120.
If I change it to 120, will it flush all the query plans? As in SQL Server 2014, Microsoft has rewritten the cardinality estimator. So will it flush the old plan and regenerate the plan according to new cardinality estimator? Can anyone explain this or point to the reference where I can understand it clearly?
Related
Are these functions available in SQL Server 2012 or older?
select IS_ROLEMEMBER ('db_owner');
select IS_SRVROLEMEMBER ('sysadmin');
I can not find any compatibility information in the online documentation here: https://learn.microsoft.com/en-us/sql/t-sql/functions/is-rolemember-transact-sql?view=sql-server-ver15
Is_RoleMember was introduced in SQL Server 2012.
Is_SrvRoleMember was introduced in SQL Server 2005 itself.
You can see when a particular feature was introduced by going through below links. These changes are coming under Database Engine Enhancements => Database Engine Security Enhancements
What is New in SQL 2005
What is New in SQL 2012
To see all the historical information about SQL Server versions, below link is very helpful: https://www.sqlshack.com/history-sql-server-evolution-sql-server-features/
I thought that SQL Azure was built on top of SQL Server 2012, but the compatibility level when you create a new database is 100 (SQL Server 2008's compatibility level), not 110.
SELECT compatibility_level FROM sys.databases WHERE name = 'Test';
I tried changing it to 110 using the two methods that I am aware of:
ALTER DATABASE Test SET COMPATIBILITY_LEVEL = 110;
--> Incorrect syntax near 'SET'.
EXEC sp_dbcmptlevel 'Test', 110;
--> Could not find stored procedure 'sp_dbcmptlevel'.
The reason this is an issue for me is because SQL 2008 doesn't support geography shapes which cross hemispheres, so if you zoom out a map to see the world and try to store the bounds of the map it will fail. Pretty silly right?
I thought that this would not be an issue in SQL Azure, because it has been fixed in SQL Server 2012, but when I try to create a shape that crosses hemispheres I get the following error:
Microsoft.SqlServer.Types.GLArgumentException: 24205: The specified input does not represent a valid geography instance because it exceeds a single hemisphere. Each geography instance must fit inside a single hemisphere. A common reason for this error is that a polygon has the wrong ring orientation. To create a larger than hemisphere geography instance, upgrade the version of SQL Server and change the database compatibility level to at least 110.
So it is telling me to change the compatibility level, like it knows that this has been fixed already, but I can't figure out how to do that in SQL Azure. Anyone have a suggestion of something to try? Or let me know if it just is not possible right now?
It is hard to say if the current SQL Azure is based on SQL Server 2008 or 2012 however November 2011 update adds lots of new feature to it from SQL Server 2008 and 2012. More Info on Database Engine Versions:
Updated Engine Version: This release updates the underlying SQL Azure database engine version from 11.0.1477.26 to 11.0.1750.34 as it is rolled out across data centers.
The following link talks about what is and what not supported with SQL Azure comparative to SQL Server 2008 and SQL Server 2008 R2:
http://msdn.microsoft.com/en-us/library/windowsazure/ff394115
The following links adds more info about what new Programmability Enhancements are added in SQL Azure from SQL Server 2012:
http://msdn.microsoft.com/en-us/library/windowsazure/hh987034.aspx
UPDATE: August 2015
Azure Sql Database V12 has a default compatibility level of 120 with possibility to go up to 130 or down using ALTER DATABASE SET COMPATIBILITY_LEVEL syntax.
I have a database that is on a SQL 2000 server, and I would like to make it a Sql 2005 express edition database.
What is needed to do in order to make that work?
/M
The cleanest way would be to create a new database in SQL 2005 and import all the objects in.
You can also backup and restore into the SQL 2005 environment. That will work as well
I have a star schema but SQL Server 2005 always uses the clustered indexes to access a table. What parameters do I have to set to enable this optimization.
According to http://blogs.msdn.com/sqlqueryprocessing/archive/2007/04/09/how-to-check-whether-the-final-query-plan-is-optimized-for-star-join.aspx and the DWH datasheet of SQL Server 2005 both claim, that SQL Server 2005 support this feature.
What edition do you use? IIRC star query optimization is ONLY in the enterprise version of SQL Server 2005.
I'm working with a client who had a SQL Server 2008 converted from a SQL Server 2000 DB and one of the queries has quite dramatically increased in time since it was on SQL Server 2000.
However, if I change the compatibility level to 2008 in the DB, the query goes like a rocket (40-50 times faster).
The query does use a number of UDFs.
My questions:
- are there issues with running SQL2000 compatibility in SQL Server 2008
- has SQL Server 2008 improved the performance when using UDFs?
There are some other things you might want to do after upgrading. See the "After upgrading..." section here: http://msdn.microsoft.com/en-us/library/bb933942.aspx