SQL Serverにテーブルを作成するためのスクリプトを作成しています。スクリプトを書くときに、データベースを作成して削除したいと思います。問題は、オブジェクトがすでに存在しているというエラーが表示されることです。ここで 新しいSQL Serverデータベースにテーブルがすでに存在しています
は私のサンプルスクリプトDECLARE @db_name varchar(20);
DECLARE @command varchar(100);
SET @db_name='testdb';
SET @command='DROP DATABASE ' + @db_name
IF EXISTS(SELECT * FROM sys.databases WHERE [email protected]_name)
exec(@command)
SET @command='CREATE DATABASE ' + @db_name
EXEC(@command)
--listing databaes
SELECT name from master.dbo.sysdatabases
-- using our database
SET @command='USE ' + @db_name
EXEC(@command)
PRINT 'listing tables'
SET @command = 'SELECT table_name FROM ' + @db_name + '.INFORMATION_SCHEMA.TABLES WHERE table_type = "base TABLE"'
EXEC(@command)
CREATE TABLE stuff(
name VARCHAR(30) PRIMARY KEY NOT NULL,
weight INT,
quantity INT)
であり、私が得る出力は
name
------------
master
tempdb
model
msdb
testdb
SW
(6 rows affected)
listing tables
table_name
はエラーです:
Msg 2714, Level 16, State 6, Server Orange, Line 22
There is already an object named 'stuff' in the database.
私は、Linuxのミントのマシン上でこれを実行して、インストールしたばかりのSQL Serverで、私はsqlcmd
を使用します。私はテーブルを作成する前にdrop/delete
コマンドを置くことができると思いますが、これは最初に起こるべきではありません。ここで何が起こっているのですか?