Ich schreibe ein Skript, um eine Reihe von Tabellen in SQL Server zu erstellen. Während ich das Skript schreibe, möchte ich die Datenbank erstellen und löschen. Das Problem ist, dass ich eine Fehlermeldung bekomme, dass das Objekt bereits existiert.Tabelle existiert bereits in einer neuen SQL Server-Datenbank
Hier ist mein Beispielskript
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)
und der Ausgang I erhalten
name
------------
master
tempdb
model
msdb
testdb
SW
(6 rows affected)
listing tables
table_name
Fehler:
Msg 2714, Level 16, State 6, Server Orange, Line 22
There is already an object named 'stuff' in the database.
ich diese Minze Maschine auf einem Linux laufen, ein frisch installiertes SQL Server und ich verwende sqlcmd
. Ich denke, ich kann einen drop/delete
Befehl vor dem Erstellen der Tabelle setzen, aber das sollte nicht passieren, mit zu beginnen. Was geht hier vor sich?