存储过程里执行存储过程遇到问题帮看看 谢谢

uheart 2008-04-18 01:53:38
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE InsJS
AS
BEGIN
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','IP'
go
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','密码'
go
select * from srv_lnk.库.dbo.表
go
exec sp_dropserver 'srv_lnk','droplogins'
go
END

报语法错

exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','IP'
go
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','密码'
go
select * from srv_lnk.库.dbo.表
go
exec sp_dropserver 'srv_lnk','droplogins'
go

而且这一段在查询分析器里执行通过
...全文
132 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
uheart 2008-04-18
  • 打赏
  • 举报
回复
结果报这个错
消息 7202,级别 11,状态 2,过程 InsJS,第 8 行
在 sysservers 中找不到服务器 'srv_lnk'。请执行 sp_addlinkedserver 将该服务器添加到 sysservers。
kk19840210 2008-04-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 uheart 的回复:]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE InsJS
AS
BEGIN
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','222.190.111.117'
--go
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','njemc51862371'
--go
select * from srv_lnk.njenvironment.dbo.监测点基本信息表
--go
exec sp_dropserver 'srv_lnk','droplogins'
go
END
go


消息 102,级别…
[/Quote]
SET ANSI_NULLS ON 
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE InsJS
AS
BEGIN
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','222.190.111.117'
--go
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','njemc51862371'
--go
select * from srv_lnk.njenvironment.dbo.监测点基本信息表
--go
exec sp_dropserver 'srv_lnk','droplogins'
--go
END
go
kk19840210 2008-04-18
  • 打赏
  • 举报
回复
GO 不是 Transact-SQL 语句;它是 sqlcmd 和 osql 实用工具以及 SQL Server Management Studio 代码编辑器识别的命令。

SQL Server 实用工具将 GO 解释为应该向 SQL Server 实例发送当前批 Transact-SQL 语句的信号。当前批语句由上一 GO 命令后输入的所有语句组成,如果是第一条 GO 命令,则由即席会话或脚本开始后输入的所有语句组成。

GO 命令和 Transact-SQL 语句不能在同一行中。但在 GO 命令行中可包含注释。

用户必须遵照使用批处理的规则。例如,在批处理中的第一条语句后执行任何存储过程必须包含 EXECUTE 关键字。局部(用户定义)变量的作用域限制在一个批处理中,不可在 GO 命令后引用。


SQL Server 应用程序可以将多个 Transact-SQL 语句作为一个批发送到 SQL Server 的实例来执行。然后,该批中的语句被编译成一个执行计划。程序员在 SQL Server 实用工具中执行特殊语句,或生成 Transact-SQL 语句的脚本在 SQL Server 实用工具中运行时,使用 GO 作为批结束的信号。

如果基于 ODBC 或 OLE DB API 的应用程序试图执行 GO 命令,会收到语法错误。SQL Server 实用工具从不向服务器发送 GO 命令。
jinjazz 2008-04-18
  • 打赏
  • 举报
回复
CREATE PROCEDURE InsJS
AS
BEGIN
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','IP'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','密码'
select * from srv_lnk.库.dbo.表
exec sp_dropserver 'srv_lnk','droplogins'
END
uheart 2008-04-18
  • 打赏
  • 举报
回复
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE InsJS
AS
BEGIN
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','222.190.111.117'
--go
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','njemc51862371'
--go
select * from srv_lnk.njenvironment.dbo.监测点基本信息表
--go
exec sp_dropserver 'srv_lnk','droplogins'
go
END
go



消息 102,级别 15,状态 1,过程 InsJS,第 10 行
'droplogins' 附近有语法错误。
消息 102,级别 15,状态 1,第 1 行
'END' 附近有语法错误。

uheart 2008-04-18
  • 打赏
  • 举报
回复
系统返回如下信息
消息 102,级别 15,状态 1,过程 InsJS,第 10 行
'droplogins' 附近有语法错误。
消息 102,级别 15,状态 1,第 1 行
'END' 附近有语法错误。
jinjazz 2008-04-18
  • 打赏
  • 举报
回复
go不是sql语句,是微软的sql工具识别的命令
liangCK 2008-04-18
  • 打赏
  • 举报
回复
不要go
-狙击手- 2008-04-18
  • 打赏
  • 举报
回复
SET ANSI_NULLS ON  
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE InsJS
AS
BEGIN
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','IP'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','密码'
select * from srv_lnk.库.dbo.表
exec sp_dropserver 'srv_lnk','droplogins'
go
END

go

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧