【问题标题】:TSQL and UNC PathsTSQL 和 UNC 路径
【发布时间】:2014-04-22 19:25:36
【问题描述】:

我不是 TSQL 专家,所以请耐心等待。所以最近我在我的本地服务器上使用 SQL Server 2008 R2 Management Studio 在 TSQL 中做一个项目。我当时正在从我的C: 驱动器上的临时文件中读取我的文件,并将它们批量插入到表中。

然后我去了一个普通的服务器,而不是我机器上的本地服务器。

我花了一点时间才意识到我不再能够访问我的本地计算机文件夹和文件,这导致了我的问题。

我了解到一种解决方案是在服务器上创建映射驱动器,但这不是我的选择。

所以我的问题是我还有哪些其他选择?我可以使用 UNC 路径来访问我的文件或其他任何东西吗?

我要访问的文件是用逗号分隔和换行符终止的常规文本文件。

(我看到了与我的问题有些相似的问题,但似乎服务器特定或特定于他们的特定问题。他们的问题也没有得到回答。)

【问题讨论】:

  • 如果要将这些文件导入远程 SQL Server,该服务器计算机必须有权访问这些文件。该服务器计算机的 本地 驱动器或设置为可由运行 SQL Server 的服务器计算机和用户帐户访问的 共享 驱动器就是这种情况那台机器上的引擎。一个或另一个 - 真的没有其他任何“魔术”技巧。
  • @marc_s 不一定是服务器机器。 SQL Server 实例运行的帐户,或者,如果它是 SQL 代理任务,则服务运行或模拟的帐户。这可能是 SYSTEM 帐户,或者如果您遵循过去 10 年发布的 SQL Server 版本的最佳实践,它可能是您手动配置的帐户。
  • @BaconBits:你是对的 - 但还需要从服务器机器到网络共享所在位置的物理网络连接 - 如果这不是给定的,那么你不会'走不远....

标签: file tsql path sql-server-2008-r2 unc


【解决方案1】:

实际上,映射驱动器也不起作用,因为默认情况下运行的帐户 SQL(如果我记得是本地系统)将无法访问网络。

因此,更可靠的方法肯定是使用 UNC 路径,但还有更多! (当我需要跨服务器移动数据库备份和日志备份以进行镜像时,我已经多次这样做了)。

怎么做?

  1. 在 SQL 服务器计算机和将托管共享的另一台服务器上,创建一个新用户(两台计算机上的用户名和密码相同) - 假设您不使用 AD。除了用户组之外,用户根本不需要在任何组中,但它必须在两个服务器中被称为相同并且密码必须匹配。

  2. 在 SQL Server 计算机上更改运行 SQL SERVER 的帐户。这是在 SQL 服务器配置工具中完成的。不要尝试通过 Windows 服务自己执行此操作。选择您在上述第 1 项中创建的用户。请注意,您必须输入密码。更改后重新启动 SQL 并验证 SQL 仍然运行良好。它应该像以前一样运行,但现在作为具有该用户所有权限的特定用户运行(实际上无论如何都非常有限,但至少该用户可以访问网络资源)。

  3. 在远程服务器上,确保新用户对托管您的共享的文件夹具有 NTFS 权限。如果 SQL 仅读取数据,则可能读/写或仅读取。

  4. 在远程服务器上,创建一个指向您在上面设置权限的相应文件夹的共享。如果您使用共享权限,请确保新用户也具有共享权限(不仅仅是驱动器上的 NTFS)。

设置完所有这些后,您的 SQL 脚本只需使用指向远程共享的 UNC 路径,并且由于 SQL 以“作为”有权访问该共享的用户身份运行,SQL 将可以正常查看文件!

【讨论】:

    猜你喜欢
    • 2010-09-10
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    相关资源
    最近更新 更多