2011-07-04 11 views
0

私のSQL 2008データベースには以下のような名前のテーブルがありますが、すべてがtempBinary_で始まり、プログラムで削除する必要があります。それ? 私は、SQLスクリプトやLINQtoSQLの使用で解決策を好むかどうか分かりませんが、どちらも問題ありません。SQL 2008データベース内の特定のプレフィックス名を持つすべてのテーブルをプログラムで削除する

tempBinary_002c90322f4e492795a0b8a14e2f7c99 tempBinary_0039f7db05a9456f96eb3cd6a788225a tempBinary_0057da9ef0d84017b3d0bbcbfb934fb2

私は列に前と同じように使用しましたが、テーブル名のため、それが良いかどうかはあまり知りません。 LIKEが使われているこのようなものがありますか?知りません。

Use [dbo].[database_name] 
DROP TABLE table_name 
WHERE table_name LIKE 'tempBinary_%' 

+0

解決策はこの回答に近いと思います。 http://stackoverflow.com/questions/4424038/how-to-delete-all-tables-with-prefix-bkp-from-a-given-database – radbyx

+0

これをLinq2SQLで実行し、タグを削除します。 – leppie

答えて

2
declare @stmt varchar(max) = '' 
declare @tbl_name varchar(255) 


DECLARE tbl_cursor CURSOR FORWARD_ONLY READ_ONLY 
    FOR select name 
     from sysobjects 
     where xtype='u' and name like 'tempBinary%' 
OPEN tbl_cursor 
FETCH NEXT FROM tbl_cursor 
INTO @tbl_name; 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    set @stmt = @stmt + 'drop table ' + @tbl_name + ';' + CHAR(13) 


    FETCH NEXT FROM tbl_cursor 
    INTO @tbl_name 
end 
CLOSE tbl_cursor; 
DEALLOCATE tbl_cursor;  

execute sp_sqlexec @stmt 
+0

'CHAR(13)'は何をしますか? – radbyx

+0

キャリッジリターン –

+0

sp_sqlexecを実行する前に@stmtを印刷すると、行ごとにdropステートメントが表示されます –

関連する問題