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.
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
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