sql >> データベース >  >> RDS >> Sqlserver

スキーマが存在しないか、権限がないため、スキーマを削除できません。 -SQL Server/TSQLチュートリアルパート29

    シナリオ:

    あなたは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を使用してスキーマを削除できます。 声明。 
    1. オラクルはコミットされていない読み取りオプションを許可していますか?

    2. データが存在しない場合でも月ごとのレコードを選択するMysql

    3. MySQL-構造は同じだがデータが異なる複数のテーブルからデータを選択する

    4. GROUPBYとORDERBY