mssql INFORMATION_SCHEMA COLUMNS为空

时间:2014-02-12 18:52:38

标签: ruby-on-rails sql-server information-schema

我有一个rails应用程序,可以导入自己的VIEW。

现在第一个mssql查询失败,因为当要求某个表中的可用列时,信息模式返回0行(哪些rails需要准备对象)。

当通过studio连接到mssql服务器时,我可以展开VIEW并查看所需的所有列,但是查询信息模式如下:

| SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME ='view'

返回零行。

我考虑了权限问题(虽然我没有得到任何错误,只是一个空的结果集)并且已经手动授予对相应用户的视图的权限,并且它仍然存在。我也做了查询,作为实际创建数据库并且仍然有0行的管理员。

我想知道:

  • 有什么明显的原因导致失败?
  • MSSQL按需构建INFORMATION_SCHEMA,即当我查询SCHEMA.COLUMNS表时,mherql是否使用缓存数据,或者实际上询问DB此时哪些列存在?
  • 如果答案是否定的:我可以重建COLUMNS缓存/表吗?
  • 这个查询是否适用于VIEW?

我还重新启动了sql服务并查看事件数据库以搜索损坏的表,索引或其他内容。事件并没有透露任何东西(显而易见)。

还有其他可能遗漏的东西吗?

感谢,  -u

2 个答案:

答案 0 :(得分:0)

使用此查询获取视图的列名...

 SELECT C.name 
 FROM sys.columns c INNER JOIN sys.views v
 ON c.[object_id] = v.[object_id]
 WHERE v.name = 'Your_View_Name'

你不应该使用信息架构视图的原因,阅读这篇The case against INFORMATION_SCHEMA views Aaron Bertrand的文章。

答案 1 :(得分:0)

确保指定表格的完整路径:

select COLUMN_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_CATALOG = 'dbasename' and TABLE_SCHEMA = 'dbo' and TABLE_NAME = 'tablename'