请问在SQL语句中怎么调用已经写好的脚本文件 现在有两个脚本文件a.sqlb.sqla里面根据需要可能会执行b.sql请问应该怎么调用,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 执行a可以先通过程序读出来,再执行。咱们能不能不讨论为什么要这么做,只讨论怎么才能实现。Oracle里面直接在文件名前面加个@就可以执行那个文件里面的内容了难道SQLServer不可以吗? 使用master..cmdshell ,调用 osql 读取即可.osql -U 用户名 -P 密码 -i SQL文件名(全路径)不能像Oracle那样直接读取的,必须在Osql环境中才能读取,相当于在Oracle的pl/sql环境中一样. /* script a.sql location c:\a.sql*/USE [CSDN]GOprint '-------------------------'print '-- aaaaaaaaaaaaaaa.sql --'print '-------------------------'GO/* script b.sql location: c:\b.sql*/USE [CSDN]GOprint '-------------------------'print '-- bbbbbbbbbbbbbbb.sql --'print '-------------------------'GOexec master..xp_cmdshell 'osql -E -e -i c:\a.sql'goexec master..xp_cmdshell 'osql -E -e -i c:\b.sql'/*output----------------------------1> 2> 3> 4> 5> 6> /* script a.sql location c:\a.sql*/USE [CSDN]1> 2> 3> 4> -------------------------print '-------------------------'print '-- aaaaaaaaaaaaaaa.sql --'print '-------------------------'-- aaaaaaaaaaaaaaa.sql ---------------------------1> (12 row(s) affected)output----------------------------------------1> 2> 3> 4> 5> 6> /* script b.sql location: c:\b.sql*/USE [CSDN]1> 2> 3> 4> -------------------------print '-------------------------'print '-- bbbbbbbbbbbbbbb.sql --'print '-------------------------'-- bbbbbbbbbbbbbbb.sql ---------------------------1> (12 row(s) affected)*/ osql 实用工具http://technet.microsoft.com/zh-cn/library/ms162806.aspx /* script a.sql location c:\a.sql*/USE [CSDN]GOprint '-------------------------'print '-- aaaaaaaaaaaaaaa.sql --'exec master..xp_cmdshell 'osql -E -e -i c:\b.sql' -- 添加到a.sql中print '-------------------------'GO/* script b.sql location: c:\b.sql*/USE [CSDN]GOprint '-------------------------'print '-- bbbbbbbbbbbbbbb.sql --'print '-------------------------'GOexec master..xp_cmdshell 'osql -E -e -i c:\a.sql'--exec master..xp_cmdshell 'osql -E -e -i c:\b.sql' -- 从此处去掉,go/*output-------------------------1> 2> 3> 4> 5> 6> /* script a.sql location c:\a.sql*/USE [CSDN]1> 2> 3> 4> 5> -------------------------print '-------------------------'print '-- aaaaaaaaaaaaaaa.sql --'exec master..xp_cmdshell 'osql -E -e -i c:\b.sql'print '-------------------------'-- aaaaaaaaaaaaaaa.sql -- output ----------------------------------- 1> 2> 3> 4> 5> 6> /* script b.sql location: c:\b.sql */ USE [CSDN] 1> 2> 3> 4> ------------------------- print '-------------------------' print '-- bbbbbbbbbbbbbbb.sql --' print '-------------------------' -- bbbbbbbbbbbbbbb.sql -- ------------------------- 1> */ osql/sqlcmd都可以执行,用联机看一下用法就行了 导入TXT问题 題庫數據表設計 为什么我每次进入sql2005都要点击连接? 在A表上建立更新触发器,当更新A表时把A表更新的行所有的值插入B表,请问如何实现!急,在线!~ 求sql语句??? 到底是哪里出了问题? 关于SQL的问题? 如何删除表? 在PB中如何使用SQL Server的数据库 嵌入式的sql基础问题 Ms-SqlServer下可以执行,但在Access就执行出错? SQL2005 XML类型的值读取
调用 osql 读取即可.
osql -U 用户名 -P 密码 -i SQL文件名(全路径)
不能像Oracle那样直接读取的,
必须在Osql环境中才能读取,
相当于在Oracle的pl/sql环境中一样.
/*
script a.sql
location c:\a.sql
*/
USE [CSDN]
GO
print '-------------------------'
print '-- aaaaaaaaaaaaaaa.sql --'
print '-------------------------'
GO/*
script b.sql
location: c:\b.sql
*/
USE [CSDN]
GO
print '-------------------------'
print '-- bbbbbbbbbbbbbbb.sql --'
print '-------------------------'
GO
exec master..xp_cmdshell 'osql -E -e -i c:\a.sql'
go
exec master..xp_cmdshell 'osql -E -e -i c:\b.sql'
/*
output
----------------------------
1> 2> 3> 4> 5> 6> /*
script a.sql
location c:\a.sql
*/
USE [CSDN]
1> 2> 3> 4> -------------------------
print '-------------------------'
print '-- aaaaaaaaaaaaaaa.sql --'
print '-------------------------'
-- aaaaaaaaaaaaaaa.sql --
-------------------------
1> (12 row(s) affected)output
----------------------------------------
1> 2> 3> 4> 5> 6> /*
script b.sql
location: c:\b.sql
*/
USE [CSDN]
1> 2> 3> 4> -------------------------
print '-------------------------'
print '-- bbbbbbbbbbbbbbb.sql --'
print '-------------------------'
-- bbbbbbbbbbbbbbb.sql --
-------------------------
1> (12 row(s) affected)
*/
http://technet.microsoft.com/zh-cn/library/ms162806.aspx
/*
script a.sql
location c:\a.sql
*/
USE [CSDN]
GO
print '-------------------------'
print '-- aaaaaaaaaaaaaaa.sql --'
exec master..xp_cmdshell 'osql -E -e -i c:\b.sql' -- 添加到a.sql中
print '-------------------------'
GO
/*
script b.sql
location: c:\b.sql
*/
USE [CSDN]
GO
print '-------------------------'
print '-- bbbbbbbbbbbbbbb.sql --'
print '-------------------------'
GOexec master..xp_cmdshell 'osql -E -e -i c:\a.sql'
--exec master..xp_cmdshell 'osql -E -e -i c:\b.sql' -- 从此处去掉,
go/*
output
-------------------------
1> 2> 3> 4> 5> 6> /*
script a.sql
location c:\a.sql
*/
USE [CSDN]
1> 2> 3> 4> 5> -------------------------
print '-------------------------'
print '-- aaaaaaaaaaaaaaa.sql --'
exec master..xp_cmdshell 'osql -E -e -i c:\b.sql'
print '-------------------------'
-- aaaaaaaaaaaaaaa.sql --
output
-----------------------------------
1> 2> 3> 4> 5> 6> /*
script b.sql
location: c:\b.sql
*/
USE [CSDN]
1> 2> 3> 4> -------------------------
print '-------------------------'
print '-- bbbbbbbbbbbbbbb.sql --'
print '-------------------------'
-- bbbbbbbbbbbbbbb.sql --
-------------------------
1> */