2011-06-22 6 views
4

SQLサーバーのスキーマを削除することはできません。まず、その中に含まれているすべてのオブジェクトを削除する必要があります。すべてのオブジェクトを削除してからスキーマ自体を削除するというタスクを実行するこのstored procが見つかりました。drop SQL Serverのスキーマ

スキーマを削除する実際の方法はありませんか?理想的には、私はストアドプロシージャを使用せずにこれを行う方法を探したいと思います。

また、提供されたスキーマ名が存在しないと、ストアドプロシージャがエラーを引き起こすようです。代わりに何もしないといいです。私は、これは誰かがSQL Serverが理解される言語にこれを変換することができ、単にスクリプトの先頭に

IF @SchemaName NOT EXISTS 
    QUIT 

をこの擬似コードを置くの問題だと思いますか?

+0

私は本当のキーボードではないので、簡単な答えです。私はあなたが別のスキーマにオブジェクトを転送し、その後、スキーマをドロップすることができると思います – Ash

答えて

2

削除する前にすべてのオブジェクトを削除するか、すべてのオブジェクトを新しいスキーマに移行する必要があります。任意の更なる処理の前に、ストアドプロシージャを終了し

のどちらかには「ワイルドカード」オプションでは、スキーマをドロップする前に、すべてのオブジェクトを削除する必要があり

IF SCHEMA_ID(@SchemaName) IS NULL 
    RETURN 
0
if exists(select * from sys.schemas where name = @SchemaName) 
begin 
    -- Your work 
end 
0

...ありません。スキーマが存在するかどうかを確認するには :

IF NOT EXISTS (select SCHEMA_NAME from INFORMATION_SCHEMA.SCHEMATA WHERE CATALOG_NAME='YOUR DB NAME HERE' and [email protected]) 
BEGIN 
    -- Do some processing... 
    return 
END 
4

スクリプトの先頭に次は役立つはず:

IF SCHEMA_ID(@SchemaName) IS NULL 
    RETURN 

SCHEMA_IDスキーマ名に関連付けられたスキーマIDを返し、RETURN終了無条件にAからクエリまたはプロシージャ。

関連する問題