|
@@ -0,0 +1,38 @@
|
|
|
|
+SET NOCOUNT ON
|
|
|
|
+DECLARE @cnt int;
|
|
|
|
+DECLARE @edition int;
|
|
|
|
+SELECT @edition= CONVERT(int,SERVERPROPERTY('EngineEdition'))
|
|
|
|
+IF @edition <> 3
|
|
|
|
+BEGIN
|
|
|
|
+DROP TABLE IF EXISTS tempdb.dbo.tbl;
|
|
|
|
+CREATE TABLE tempdb.dbo.tbl(db sysname, feature_name nvarchar(4000), features_in_use bit)
|
|
|
|
+insert INTO tempdb.dbo.tbl select 'server','IsPolybaseInstalled',CAST(SERVERPROPERTY ('IsPolybaseInstalled') as int);
|
|
|
|
+EXEC master.sys.sp_MSforeachdb 'USE [?];
|
|
|
|
+ DECLARE @features_in_use int;
|
|
|
|
+ SELECT @features_in_use=count(1) from sys.dm_db_persisted_sku_features;
|
|
|
|
+ IF (@features_in_use > 0)
|
|
|
|
+ INSERT INTO tempdb.dbo.tbl SELECT DB_name(),feature_name,1 from sys.dm_db_persisted_sku_features;
|
|
|
|
+ SELECT @features_in_use=count(1) from sys.column_master_keys;
|
|
|
|
+ IF (@features_in_use > 0)
|
|
|
|
+ INSERT INTO tempdb.dbo.tbl VALUES(DB_NAME(),''Always Encrypted'',1);
|
|
|
|
+ SELECT @features_in_use=count(1) from sys.security_policies;
|
|
|
|
+ IF @features_in_use > 0
|
|
|
|
+ INSERT INTO tempdb.dbo.tbl VALUES(DB_NAME(),''Row-level security'',1);
|
|
|
|
+ SELECT @features_in_use=count(1) from sys.masked_columns;
|
|
|
|
+ IF @features_in_use > 0
|
|
|
|
+ INSERT INTO tempdb.dbo.tbl VALUES(DB_NAME(),''Dynamic Data Masking'',1);
|
|
|
|
+ SELECT @features_in_use=count(1) from sys.database_audit_specifications;
|
|
|
|
+ IF @features_in_use > 0
|
|
|
|
+ INSERT INTO tempdb.dbo.tbl VALUES(DB_NAME(),''Database Auditing'',1);'
|
|
|
|
+SELECT @cnt=count(1) FROM tempdb.dbo.tbl WHERE features_in_use=1
|
|
|
|
+IF @cnt>0
|
|
|
|
+BEGIN
|
|
|
|
+SELECT * from tempdb.dbo.tbl where features_in_use = 1;
|
|
|
|
+THROW 60000, 'The instance cannot be downgraded from SP1 as it contains atleast 1 database mentioned above with SKU features not available in SQL Server 2016 RTM. If downgrade is attempted, it can leave the database in suspect mode. DROP or DISABLE the feature and rerun the script to confirm before you downgrade',0
|
|
|
|
+END
|
|
|
|
+ELSE
|
|
|
|
+THROW 60000,'The instance can be downgraded as it doesnt contain any database leveraging new features enabled in SP1 on lower editions',0
|
|
|
|
+DROP TABLE tempdb.dbo.tbl
|
|
|
|
+END
|
|
|
|
+ELSE
|
|
|
|
+PRINT 'The instance can be downgraded as Enterprise Edition is not impacted in SP1'
|