Sql 一个“创建登录用户”-用于多台单机
我已经为VS中的数据库项目创建了一个部署后脚本,在该脚本中,我授予Windows帐户UserX用户对数据库的访问权限。多个开发人员正在使用此部署后脚本,他们需要在自己的机器qcnb01、qcnb03、qcnb04等上授予此UserX访问权限。。使用独立的sql实例。有没有办法用占位符替换[qcnb02\UserX],即[qcnb???\UserX],然后相应地插入机器名 下面是我的CREATEUSER语句 如果不存在,请从sys.database_principals中选择*,其中name=N'qcnb02\UserX' 为登录名[qcnb02\UserX]创建用户[UserX],默认模式为[dbo] 去 让我澄清一下,UserX是静态部分,部署后脚本实际上在寻找并插入机器名qcnb??返回部署后脚本,即在构建\部署期间[qcnb25\UserX]。这可能吗 提前感谢你的帮助 JDA试试这个Sql 一个“创建登录用户”-用于多台单机,sql,visual-studio-2010,Sql,Visual Studio 2010,我已经为VS中的数据库项目创建了一个部署后脚本,在该脚本中,我授予Windows帐户UserX用户对数据库的访问权限。多个开发人员正在使用此部署后脚本,他们需要在自己的机器qcnb01、qcnb03、qcnb04等上授予此UserX访问权限。。使用独立的sql实例。有没有办法用占位符替换[qcnb02\UserX],即[qcnb???\UserX],然后相应地插入机器名 下面是我的CREATEUSER语句 如果不存在,请从sys.database_principals中选择*,其中name=N'
DECLARE @MachineName VARCHAR(100)
SELECT @MachineName = Host_Name()
DECLARE @SQL VARCHAR(1000)
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = N''+@MachineName+'\UserX')
BEGIN
SET @SQL = 'CREATE USER [UserX] FOR LOGIN ['+ @MachineName+'\USERX] WITH DEFAULT_SCHEMA=[dbo]'
EXECUTE @SQL
END
运行此“按原样”时,我得到…Msg 15401,级别16,状态1,第5行Windows NT用户或组“@MachineName\UserX”未找到。再查一下名字。有什么我不知道的吗?约提斯,谢谢你的帮助。它激励我把它做好。以下是有效的方法…DECLARE@MachineName VARCHAR100 SET@MachineName=Host\u Name DECLARE@SQL VARCHAR1000-如果不存在,请从sys.syslogins中选择名称,其中Name=N++@MachineName++'\UserX“BEGIN SET@SQL=”创建用户[UserX]登录['+@MachineName+'\machine],使用默认模式=[dbo]'执行@SQL END
DECLARE @MachineName VARCHAR(100)
SET @MachineName = Host_Name()
DECLARE @SQL VARCHAR(1000)
--IF NOT EXISTS (SELECT name FROM sys.syslogins WHERE name = N''+@MachineName+'\machine')
BEGIN
SET @SQL = 'CREATE USER [machine] FOR LOGIN ['+@MachineName+'\machine] WITH DEFAULT_SCHEMA=[dbo]'
EXECUTE (@SQL)
END