我正在尝试使用Microsoft.SqlServer.Dac.DacServices-> Publish(..)方法发布/创建数据库,如下所示。
using (DacPackage dacpac = DacPackage.Load(dacpacStream, DacSchemaModelStorageType.Memory, FileAccess.Read))
{
dacOptions.BackupDatabaseBeforeChanges = true;
var result = dacServiceInstance.Publish(dacpac, databaseName, new PublishOptions { CancelToken = packageDeplyCancellationToken.Token, DeployOptions = dacOptions, GenerateDeploymentReport = true });
dacServiceInstance.Register(databaseName, "Engage", dacpac.Version);
}
我的databaseName变量包含带有单引号的数据库名称 “Dileep的档案”。在这种情况下,Publish方法无法创建数据库并引发以下错误。 但是如果我手动尝试使用SQL Mangement studio中的单引号创建数据库,它就可以工作。
任何人都可以建议如何使用单引号创建数据库。
我试过逃避单引号,给另一个像“Dileep''Archive”,但现在它创建了带有2个单引号的数据库..
无法部署包。错误SQL72014:.Net SqlClient数据 提供者:Msg 102,Level 15,State 1,Line 2语法不正确 'Dileep的档案'。错误SQL72045:脚本执行错误。该 执行脚本:
IF (DB_ID(N'$(DatabaseName)') IS NOT NULL)
BEGIN
DECLARE @rc AS INT, @fn AS NVARCHAR (4000), @dir AS NVARCHAR (4000);
EXECUTE @rc = [master].[dbo].[xp_instance_regread] N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'BackupDirectory', @dir OUTPUT, 'no_output';
IF (@rc = 0)
SELECT @dir = @dir + N'\';
IF (@dir IS NULL)
BEGIN
EXECUTE @rc = [master].[dbo].[xp_instance_regread] N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', @dir OUTPUT, 'no_output';
IF (@rc = 0)
SELECT @dir = @dir + N'\';
END
IF (@dir IS NULL)
BEGIN
EXECUTE @rc = [master].[dbo].[xp_instance_regread] N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\Setup', N'SQLDataRoot', @dir OUTPUT, 'no_output';
IF (@rc = 0)
SELECT @dir = @dir + N'\Backup\';
END
IF