【问题标题】:Using sqlcmd to capture the data from a remote server and putting the excel file in some other server使用 sqlcmd 从远程服务器捕获数据并将 excel 文件放在其他服务器中
【发布时间】:2013-04-09 10:49:50
【问题描述】:

我已使用 sqlcmd 从远程服务器捕获所需数据,一切正常。

我在批处理文件中使用了以下查询 -

>>"Output_hvac.xls" echo %date% %time%
>>"Output_hvac.xls" SQLCMD ...

现在这个批处理文件保存在本地机器上,因此当它运行时会生成一个输出 _hvac excel 文件。

我希望将此 excel 文件存储在未安装 sql server 的其他服务器中。批处理必须在本地计算机上运行,​​并且要在服务器上更新 excel 表。现在我可以访问服务器但如果我尝试使用以下查询执行此操作,则会显示访问被拒绝。

>>"//172......./d$/Output_hvac.xls" echo %date% %time%
    >>"Output_hvac.xls" SQLCMD ...

现在我该怎么做。

【问题讨论】:

  • 我不明白您显示的代码 sn-ps。通常您使用-o 选项执行sqlcmd 来指定输出路径,但在您显示的内容中我看不到任何类似的东西。确切的错误信息是什么?如果是 Windows 错误 5(“访问被拒绝”),那么问题只是您没有权限写入您想要的共享和/或文件夹。

标签: sql-server database batch-file sqlcmd


【解决方案1】:

使用sqlcmd命令时需要正式连接远程服务器。

查看 -S 参数:

-S [protocol:]server[\instance_name][,port] 指定要连接的 SQL Server 实例。它设置 sqlcmd 脚本变量 SQLCMDSERVER。

指定 server_name 以连接到默认实例 该服务器计算机上的 SQL Server。指定 server_name [ instance_name ] 以连接到该 SQL Server 的命名实例 服务器计算机。

如果没有指定服务器计算机,则 sqlcmd 连接 到本地计算机上的默认 SQL Server 实例。这 从远程计算机上执行 sqlcmd 时需要选项 网络。协议可以是 tcp (TCP/IP)、lpc(共享内存)或 np (命名管道)。如果您不指定 server_name [ \instance_name ] 当您启动 sqlcmd 时,SQL Server 会检查并使用 SQLCMDSERVER 环境变量。

关于msdn的完整文章。

【讨论】:

  • 我没听懂你想说的。请可以更简单。我已经使用 -S "服务器名称从远程服务器获取数据,工作正常。我想获取通过本地机器上的批处理文件从远程服务器发送数据,并将此数据提供给另一台服务器机器。
  • 您需要在有权访问这些机器的用户的上下文中执行批处理文件。
  • 我可以访问那台机器。我可以远程登录到那台机器。但是如果我尝试当我的批处理文件在本地机器上运行并且服务器机器上的 excel 文件应该得到更新。它显示访问被拒绝。
猜你喜欢
  • 2015-10-31
  • 2020-10-28
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 2012-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多