シナリオ:
あなたはSQLServer開発者として住宅ローン会社で働いています。スキーマを削除するSQLスクリプトを準備するためにこの要件があります。Drop Schema SchemeNameを使用します
開発中のSQLServerインスタンスのステートメントで、以下のエラーが発生します。
スキーマ''が存在しないか、権限がないため、スキーマ''を削除できません。
次のステップは何ですか?
解決策:
上記のエラーにはいくつかの理由が考えられます。 1つは、スキーマを削除する権限が実際にはありません。あなたはDBAに確認し、彼はあなたがこの変更を行うためのすべての権限を持っていることを確認しました。さらに調べてみると、このスキーマを使用しているテーブルやビューなどのオブジェクトがあることがわかりました。ここから、2つの解決策を提案できます。
1)すべてのオブジェクトを削除します。スキーマに関連してからスキーマを削除する (誰かがこのスキーマとオブジェクトを使用していたシナリオが存在する可能性があります。これで、スキーマとそれに関連するオブジェクトを使用する必要がなくなります。チームと話し合い、オブジェクトとスキーマのドロップスクリプトを準備すると言われた場合は、オブジェクトエクスプローラーの詳細ウィンドウを使用して、ドロップオブジェクトスクリプトを生成できます。
2) オブジェクトを保持し、それらを別のスキーマに移動する必要があります。多分dboまたは任意の新しいスキーマ。 転送後 オブジェクトの場合、スキーマを削除します。
以下のクエリを使用して、オブジェクトを転送するためのスクリプトを生成できます。
Declare @SourceSchema VARCHAR(100) Declare @DestinationSchema VARCHAR(100) SET @SourceSchema='TB' SET @DestinationSchema='dbo' Select 'Alter Schema ['+@DestinationSchema+'] Transfer '+@SourceSchema+'.['+name+']'
from sys.objects where schema_name(schema_id)=@SourceSchema
生成されたスクリプトをコピーして、データベースで実行します。完了したら、 Drop Schema SchemaNameを使用してスキーマを削除できます。 声明。