奇怪问题,请各位老大关注一下

了缘 2005-04-07 03:25:51
存储过程中SQL语句
set @sql='select * from databasename.dbo.tabletest'
exec sp_executesql @sql

报错信息:
服务器: 消息 913,级别 16,状态 8,行 2
未能找到 ID 为 24 的数据库。可能该数据库尚未激活,也可能正在转换过程中。

但是在查询分析器中执行
select * from databasename.dbo.tabletest
这个是成功的
而且,
ID 为 24 的数据库根本不存在啊,
我执行SQL语句的数据库的ID号是23,可是总执行不成功
真不知道什么原因
...全文
98 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
了缘 2005-04-11
  • 打赏
  • 举报
回复
select name,dbid from master..sysdatabases
得到:
master 1
model 3
model_t 17
msdb 4
Northwind 6
pubs 5
SysTemplate 7
SysTemplate_t 19
tempdb 2
test 14
UDRP_app1 10
UDRP_app2 12
UDRP_app3 13
UDRP_app4 15
UDRP_app5 16
UDRP_app7 21
UDRP_app8 22
UDRP_Entdata 11
UDRP_Entdata_t 18
Udrp_Report 8
Udrp_TempQuery 9
然后当我新增一个数据库后,如UDRP_app9他的ID号就会为20,但是当我执行查询语句时,却报ID为23的数据库没有找到,所以不知道什么原因
zjcxc 2005-04-07
  • 打赏
  • 举报
回复
--这样也是可以的(我那样写只是测试方便

use tempdb
declare @sql nvarchar(4000)
set @sql='select * from pubs.dbo.jobs'
exec sp_executesql @sql
talantlee 2005-04-07
  • 打赏
  • 举报
回复
set @sql='select * from databasename.dbo.tabletest'
錯誤set @sql不能用於返回多條記錄,zjcxc(邹建) 大哥 返回1條記錄自然可以返回
select @sql='select * from databasename.dbo.tabletest'
zjcxc 2005-04-07
  • 打赏
  • 举报
回复
像是你自己的问题
zjcxc 2005-04-07
  • 打赏
  • 举报
回复
use tempdb
declare @sql nvarchar(4000)
set @sql='select top 1 job_id from pubs.dbo.jobs'
exec sp_executesql @sql

/*--结果

job_id
------
1

(所影响的行数为 1 行)
--*/

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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