在不知道计算机主机名的情况下在 SQL 脚本中指定 Windows 用户名

发布于 2024-08-16 08:33:05 字数 331 浏览 6 评论 0原文

我想引用 Windows 计算机上的用户帐户,但不知道计算机的主机名。

具体来说,我在 SQL 脚本中分配 SQL Server 数据库的权限,这将向该计算机上的本地用户帐户授予权限。

例如: CREATE USER [UserA] FOR LOGIN [MACHINENAME\UserA] WITH DEFAULT_SCHEMA=[dbo]

此脚本是作为安装过程的一部分调用的,因此我事先不知道“MACHINENAME”。

是否有一个特殊的标记,表示我可以使用的“本地计算机”?像这样的东西: '.\UserA',还是'localhost\UserA'?

谢谢!!

I'd like to reference a user account on a Windows machine, without knowing the host name of the machine.

Specifically, I am assigning permissions on a SQL server database, in a sql script, that will give permissions to a local user account on that machine.

For example:
CREATE USER [UserA] FOR LOGIN [MACHINENAME\UserA] WITH DEFAULT_SCHEMA=[dbo]

This script is invoked as part of an installation process, so I don't know the 'MACHINENAME' ahead of time.

Is there a special token meaning 'the local machine' that I can use? Something like:
'.\UserA', or 'localhost\UserA'?

Thanks!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ι不睡觉的鱼゛ 2024-08-23 08:33:05

我实际上没有使用过这个,但你可能会在 SQLCMD 模式环境变量中找到你需要的东西。

我认为有一个特别的 SQLCMDWORKSTATION 可以满足您的需求。

MSDN 文档 指出此变量默认为计算机名称。

您还可以在 SQLCMD .ini 文件中覆盖这些环境变量。

如果这不起作用,那么您仍然可以在 SQLCMD 模式中找到可行的解决方案 - 它允许您将变量动态插入到 SQL 脚本中。

I haven't actually used this, but you may find what you need in the SQLCMD mode environment variables.

There is one in particular SQLCMDWORKSTATION that I think will give you what you want.

The MSDN documentation states that this variable defaults to the computer name.

You can also override these environment variables within a SQLCMD .ini file.

If that doesn't work, then you may still find a workable solution within SQLCMD mode - it lets you dynamically insert variables into SQL scripts.

羁绊已千年 2024-08-23 08:33:05

谢谢 - 我找到了一个好方法,使用 SERVERPROPERTY('MachineName'),如下所示:

DECLARE @USERNAME NVARCHAR(MAX)
DECLARE @MACHINE_NAME NVARCHAR(MAX)
SELECT @MACHINE_NAME = CAST(SERVERPROPERTY('MachineName') AS NVARCHAR(MAX))
SET @USERNAME = @MACHINE_NAME + '\UserA'

Thanks -- I found a good way to do it, using the SERVERPROPERTY('MachineName'), as follows:

DECLARE @USERNAME NVARCHAR(MAX)
DECLARE @MACHINE_NAME NVARCHAR(MAX)
SELECT @MACHINE_NAME = CAST(SERVERPROPERTY('MachineName') AS NVARCHAR(MAX))
SET @USERNAME = @MACHINE_NAME + '\UserA'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文