2011-06-28 42 views
-2

我需要使用批处理文件查询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 

有什么建议吗?

+2

您是否在Google中查找过osql? – gbn

回答

1

osql有一个简单的成熟。

比如我从E运行的SQL命令:\ backupdb.txt与

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

它的工作

2

这里是我如何做到这一点。

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

接下来,使用SQLCMD(或OSQL或灭亡的思想,ISQL)来调用该文件,像这样:

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

其中:

  • S用于指定SQL实例服务器(这里用第一批参数指定)
  • E使用NT身份验证
  • b如果SQL遇到错误,返回批量ERRORLEVEL可以拾取的值并处理
  • H-1回无标题行(IF数据集返回)
  • 我QUOTED_IDENTIFIER设置上(这在我的脸上炸毁了一次,我忘了如何或为何,我也曾经因为它包含)
  • d数据库连接到
  • 当完成
  • >指示任何输出到指定的文件以供后续处理

SQLCMD等我执行以下脚本并退出。人。有很多参数,请在Books Online中查看。批量参数可以实现更多细节。