我已为此数据库项目准备好所有脚本和过程,但我希望有一个存储过程来创建我的数据库和所有表。它也可能在proc中掉落(如果它存在),但是现在我只关注创建它。
我认为它与主数据库有关,但无法弄清楚。
看起来像这样:
USE master
IF OBJECT_ID('dbo.myDB' ) IS NULL
CREATE PROCEDURE myNewDatabase
BEGIN
CREATE DATABASE myDB
END
ELSE
PRINT 'myDB Database already exists'
注意:然后我必须做另一个存储过程来创建所有表吗?还有一点困惑,因为如果object_id为null'通常检查过程名称,但这个是检查数据库名称吗?
有人可以告诉我,我的想法是否在正确的轨道上出租?
谢谢
答案 0 :(得分:1)
我并不是说以这种方式创建数据库是个好主意(因为它不是),但如果你真的想要,请按照以下方式进行:
CREATE PROC dbo.myNewDatabase
AS
SET NOCOUNT ON;
DECLARE @dbname VARCHAR(100) = 'myDB'
,@path VARCHAR(1000) = 'C:\Test\'
,@sql VARCHAR(1000);
IF DB_ID(@dbname) IS NULL
BEGIN
SELECT
@sql =
'CREATE DATABASE ' + @dbname + ' ON (NAME = ' + @dbname
+ '_Data, FILENAME = ''' + @path + @dbname + '.mdf'')'
+ ' LOG ON (NAME = ' + @dbname + '_Log, FILENAME = ''' + @path + @dbname
+ '.ldf'')';
EXEC(@sql);
END
ELSE
PRINT 'myDB Database already exists'
GO