2017-08-02 8 views
0

DBスキーマおよびSQLサーバーでユーザーを削除する方法は、以下を参照してください:私は、スキーマとユーザーを削除するには、SQLコードを持って

USE [DB1] 
GO 
--SELECT * FROM sys.schemas s WHERE s.principal_id = USER_ID('ITAdmin') 
WHILE EXISTS (SELECT * FROM sys.schemas s WHERE s.principal_id = USER_ID('ITAdmin')) 
BEGIN 
    DECLARE @tmpSchemaHolderToBeDroppedOrChanged NVARCHAR(100), @tmpAlterSchemaAuthorisationStatement NVARCHAR(200) 
    SET @tmpAlterSchemaAuthorisationStatement = 'DROP SCHEMA ' 
    SET @tmpSchemaHolderToBeDroppedOrChanged = (SELECT TOP 1 s.name FROM sys.schemas s WHERE s.principal_id = USER_ID('ITAdmin')) 
    IF @tmpSchemaHolderToBeDroppedOrChanged = 'ITAdmin' 
    BEGIN 
      PRINT 'Dropping ITAdmin schema.' 
      IF schema_id('ITAdmin') IS NOT NULL 
      BEGIN 
        DROP SCHEMA ITAdmin; 
        PRINT 'ITAdmin schema has been dropped.' 
      END 
    END 
    ELSE 
    BEGIN 
      --Reassign other schemas linked to the ITAdmin user back to themselves. 
      SET @tmpAlterSchemaAuthorisationStatement = 'ALTER AUTHORIZATION ON SCHEMA::' 

      SET @tmpAlterSchemaAuthorisationStatement = @tmpAlterSchemaAuthorisationStatement + @tmpSchemaHolderToBeDroppedOrChanged + ' TO ' + @tmpSchemaHolderToBeDroppedOrChanged 

      PRINT @tmpAlterSchemaAuthorisationStatement 
      EXEC sp_executesql @tmpAlterSchemaAuthorisationStatement 
    END 
END 
GO 
if user_id('ITAdmin') is not null 
begin 
    DROP USER ITAdmin; 
end 

それはそれのように行動しているが、スキーマとユーザーを削除したが、い何をすべきかをしていない。 このコードを修正するにはどうすればよいですか?

+0

コード実行後にスキーマとユーザーが削除されていないということを意味しましたか? –

+0

@FerdinandGaspar、thats correct。スキーマとユーザーの両方を削除しない – Immortal

答えて

0

私は次のスクリプトを使用してスキーマとユーザーをドロップ:

DROP SCHEMA ITAdmin 
DROP USER ITAdmin 

私は、コードを実行し、それが働きました!これはとても奇妙ですが、うまくいきました。

関連する問題