-1

我需要使用批处理文件查询 sql server 数据库。我将这些 cmdlines 放在批处理文件中。当我运行批处理文件时。建立信任连接后,光标停留在那里。

OSQL -E 
use db1
SELECT count(*) FROM table_01 t1 
left join table_02 t2 on t1.tableID = t2.tableID 
WHERE t1.Date < '20110724' 
Go

请问有什么建议吗?

4

2 回答 2

2

这是我的做法。

首先,构建您想要的 SQL 脚本,并将其存储为一个简单的文本文件。

接下来,使用 SQLCMD(或 OSQL,或者说是 ISQL)调用该文件,如下所示:

SQLCMD -S %1 -E -b -h-1 -I -d tempdb -i BulkDeploy.txt  > BulkDeploy_%DateString%.txt

在哪里:

  • S指定SQL实例服务器(这里用第一个batch参数指定)
  • E 使用 NT 认证
  • b 如果 SQL 遇到错误,则返回批处理 ERRORLEVEL 可以提取和处理的值
  • h-1 不返回标题行(如果返回数据集)
  • 我设置了 QUOTED_IDENTIFIER (这在我的脸上爆炸了一次,我忘记了如何或为什么,从那以后我就把它包括在内了)
  • d 要连接的数据库
  • 我执行以下脚本并在完成后退出
  • > 将任何输出定向到指定文件以进行后续处理

SQLCMD 等。人。有很多参数,请在联机丛书中查看。使用批处理参数可以实现进一步的微妙之处。

于 2011-06-28T14:13:43.970 回答
1

osql 有一个简单的功能。

例如,我从 e:\backupdb.txt 运行 SQL 命令

osql -S servername -U user -P password -i e:\backupdb.txt

它完成了工作

于 2011-06-28T14:05:12.517 回答