我不是TSQL的专家,请耐心等待。最近我使用SQL Server 2008 R2 Management Studio在本地服务器上使用TSQL进行了一个项目。我正在从C:
驱动器上的临时文件中读取我的文件,并将它们批量插入到表中。
然后我去了一台普通服务器而不是我机器上的本地服务器。
我花了一点时间才意识到我无法再访问我的本地计算机文件夹和文件,这导致了我的问题。
我读过一个解决方案是在服务器上创建一个映射驱动器,但这对我来说不是一个选项。
所以我的问题是对我有什么其他选择?我可以使用UNC路径访问我的文件或其他任何内容吗?
我要访问的文件是以逗号分隔并以换行符终止的常规文本文件。
(我看到了与我有些类似的问题,但似乎服务器具体或特定于他们的特定问题。也没有他们的问题得到解答。)
答案 0 :(得分:0)
实际上,映射驱动器无法正常工作,因为默认情况下帐户SQL运行(如果我记得,本地系统)将无法访问网络。
所以,更可靠的方法是使用UNC路径但是还有更多! (当我需要跨服务器移动数据库备份和日志备份以进行镜像时,我已经多次这样做了)。
如何?
在SQL服务器计算机和将托管共享的其他服务器上,创建一个新用户(两台计算机上的用户名和密码相同) - 假设您没有使用AD。用户不需要在除用户组之外的任何组中,但必须在两个服务器中调用相同的密码,并且密码必须匹配。
在SQL Server计算机上更改运行SQL SERVER的帐户。这是在SQL Server配置工具中完成的。不要试图通过Windows服务自己做这件事。选择您在上面的1中创建的用户。请注意,您必须输入pw。更改SQL后重新启动SQL并验证SQL仍然正常运行。它应该像以前一样运行,但现在作为具有该用户的所有权限的特定用户运行(实际上无论如何都非常有限,但至少用户可以访问网络资源)。
在远程服务器上,确保新用户对将托管您的共享的文件夹具有NTFS权限。或许只读或写,如果SQL只读取数据。
在远程服务器上,创建一个指向您为上面设置权限的相应文件夹的共享。确保您是否使用共享权限,新用户也对共享具有权限(而不仅仅是驱动器上的NTFS)。
设置完所有这些后,您的SQL脚本只使用指向远程共享的UNC路径,并且由于SQL“作为”有权访问该共享的用户运行,因此SQL会看到文件正常!