SQL MS SQL Datenbank und Tabelle Create

roker002

Commander
Registriert
Dez. 2007
Beiträge
2.073
ich möchte eine Datenbank und eine Tabelle anlegen falls diese nicht existieren.

mein CODE sieht so aus. Die einzelnen Codeschnippseln hab ich aus den Netz.

Code:
-- Get the SQL Server data path
DECLARE @data_path nvarchar(256);
SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
                  FROM master.sys.master_files
                  WHERE database_id = 1 AND file_id = 1);

if not exists (select * from sysdatabases where name = 'DBNAME')
begin
EXECUTE('create database DBNAME on primary
	( 
		NAME = DBNAME,
		FILENAME =  '''+@data_path+ 'DBNAME.mdf'',
		SIZE = 3MB,
		MAXSIZE = 10MB,
		FILEGROWTH = 1MB
	)
LOG ON
( NAME = DBNAME_log,
    FILENAME = '''+ @data_path + 'DBNAME_log.ldf'',
    SIZE = 3MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB )'
);
end

if not exists (SELECT name FROM sysobjects WHERE name = 'TABELLENNAME' AND OBJECTPROPERTY(id,'IsUserTable') = 1)
	AND exists (select * from sysdatabases where name = 'DBNAME')
begin
create table [DBNAME].[dbo].[TABELLENNAME] 
	(
		......
	);
end

if exists (SELECT name FROM sysobjects WHERE name = 'TABELLENNAME' AND OBJECTPROPERTY(id,'IsUserTable') = 1)
begin
	insert into [dbo].[TABELLENNAME] values (...);
end

Problem ist... ich kann DBNAME nicht sofort verwenden wenn ich diese durch den Befehl oben erstelle. Offenbar wird erst nach der DBNAME gefragt und Tabelle erstellt bevor es über geprüft wird ob die Datenbank existiert oder nicht.
Kann man irgendwie durch ein makro einen sprungpunkt bestimmen wenn eine operation ausgeführt wurde oder werden soll?
oder gibt es da einen anderen Lösungsansatz?

danke
 
Zurück
Oben