明確にするために、これは実際には質問ではなく、答えを探していた私のような人々のためのより多くの助けです。
多くのアプリケーションが一時テーブルなどを作成しますが、TeamFoundationServerがテストSQLServerで80以上のデータベースを作成したときに驚きました。TFSが正しくインストールされなかったので、親切にもそれを片付けてくれました。各データベースには名前の規則があるため、各データベースを手動で削除するのではなく、カーソルの使用方法を思い出し、これまでで最も賢明でないT-SQLと見なすものを記述しました。
CREATE TABLE #databaseNames (name varchar(100) NOT NULL, db_size varchar(50), owner varchar(50), dbid int, created date, status text, compatibility_level int);
INSERT #databaseNames
exec sp_helpdb;
DECLARE dropCur CURSOR FOR
SELECT name FROM #databaseNames WHERE name like '_database_name_%';
OPEN dropCur;
DECLARE @dbName nvarchar(100);
FETCH NEXT FROM dropCur INTO @dbName;
DECLARE @statement nvarchar(200);
WHILE @@FETCH_STATUS = 0
BEGIN
SET @statement = 'DROP DATABASE ' + @dbName;
EXEC sp_executesql @statement;
FETCH NEXT FROM dropCur INTO @dbName;
END
CLOSE dropCur;
DEALLOCATE dropCur;
DROP TABLE #databaseNames;
言うまでもなく、このようなカーソルの使用はおそらく非常に危険であり、細心の注意を払って使用する必要があります。これは私にとってはうまくいき、データベースへのさらなる損傷はまだ見られませんが、私は否認します。このコードは自己責任で使用し、最初に重要なデータをバックアップしてください。
また、これが問題ではないので削除する必要がある場合は、理解しています。人々が見るだろうどこかにこれを投稿したかっただけです。