需要在其中創建文件夾和數據庫。由於沒有能力使用變量名和路徑創建數據庫,我試圖使用EXEC()語句。但它失敗,錯誤'日誌附近語法不正確''。我做錯了什麼?如何使用EXEC()語句創建SQL數據庫
USE Master;
GO
SET NOCOUNT ON
-- 1 - Variable declaration
DECLARE @DBName1 sysname
DECLARE @DataPath1 nvarchar(500),
DECLARE @LogPath1 nvarchar(500)
DECLARE @DirTree TABLE (subdirectory nvarchar(255), depth INT)
DECLARE @version sysname
declare @sql nvarchar(500)
declare @fulldbpath varchar(500)
declare @fulllogpath varchar(500)
-- 2 - Initialize variables
SET @version=
CASE SUBSTRING(CONVERT(VARCHAR(50), SERVERPROPERTY('productversion')), 1, 4)
WHEN '9.00' THEN '2005'
WHEN '10.0' THEN '2008'
WHEN '10.5' THEN '2008R2'
WHEN '11.0' THEN '2012'
WHEN '12.0' THEN '2014'
END
SET @DBName1 = 'DB1'
SET @DataPath1 = 'G:\StorageGroup1\SQL' + @version+ '\'+ @DBName1
SET @LogPath1 = 'F:\StorageGroup1\SQL\' + @version+ '\'+ @DBName1
SET @[email protected]+'\'[email protected]+'.mdf'
SET @[email protected]+'\'[email protected]+'_log.ldf'
-- 3 - @DataPath values
INSERT INTO @DirTree(subdirectory, depth)
EXEC master.sys.xp_dirtree @DataPath1
-- 4 - Create the @DataPath directory
IF NOT EXISTS (SELECT 1 FROM @DirTree WHERE subdirectory = @DBName1)
EXEC master.dbo.xp_create_subdir @DataPath1
-- 5 - Remove all records from @DirTree
DELETE FROM @DirTree
-- 6 - @LogPath values
INSERT INTO @DirTree(subdirectory, depth)
EXEC master.sys.xp_dirtree @LogPath1
-- 7 - Create the @LogPath directory
IF NOT EXISTS (SELECT 1 FROM @DirTree WHERE subdirectory = @DBName1)
EXEC master.dbo.xp_create_subdir @LogPath1
--8 -Create database
set @sql = 'CREATE DATABASE [@DBName1]
ON (NAME = [@DBName1],
FILENAME = [@fulldbpath]
LOG ON (NAME = [@DBName1]
FILENAME = [@fulllogpath]
)'
EXEC(@sql)
SET NOCOUNT OFF
GO
'打印'出''失敗的'@ sql'命令並在此處發佈。 – gvee 2014-08-27 13:11:51
這: CREATE DATABASE [@ DBName1] \t ON(NAME = [@ DBName1], \t \t FILENAME = [@fulldbpath] \t LOG ON(NAME = [@ DBName1] \t \t FILENAME = [@ fulllogpath] \t \t) – user1980915 2014-08-27 13:18:51
查看問題?';-)'當您嘗試執行確切的語句時會發生什麼? – gvee 2014-08-27 13:26:46