1

私は MS SQL Server 2000 SP4 を使用しており、既存のデータベースをチェックするスクリプトの次の部分があります。

IF EXISTS (SELECT * FROM sysdatabases WHERE name='MY_DBNAME')
BEGIN
    PRINT 'Using the existing database MY_DBNAME.'
    USE MY_DBNAME
END
ELSE
BEGIN
    PRINT 'Creating new database MY_DBNAME.'
    CREATE DATABASE MY_DBNAME
END
GO

このエラーが発生し続けます:

データベース 'MY_DBNAME' のエントリが sysdatabases に見つかりませんでした。その名前のエントリは見つかりませんでした。名前が正しく入力されていることを確認してください。

このメッセージを無効にする方法はありますか、またはテーブルが存在するかどうかを確認する別の方法はありますか?

4

2 に答える 2

4

実行前に「USE MY_DBNAME」を含め、すべてをコンパイルしようとしています。このデータベースが存在しないため、コンパイルは失敗します。残念ながら、単一の SQL バッチでやろうとしていることを実行することはできません。

于 2009-07-16T11:04:22.990 に答える
1

あなたのヒントのおかげで、私は解決策を見つけました:

IF EXISTS (SELECT * FROM sysdatabases WHERE name='MY_DBNAME')
BEGIN
    PRINT 'Using the existing database MY_DBNAME.'
END
ELSE
BEGIN
    PRINT 'Creating new database MY_DBNAME.'
    CREATE DATABASE [MY_DBNAME]
END
GO

USE [MY_DBNAME]
GO
于 2009-07-16T11:13:08.417 に答える