今天接到一位开发同事报告说无法打开数据库列表。错误包括称:某个新建的DB没权限访问。但是其他的新建DB是没有包同样的问题,都可以正常使用。
根据情况我操作了一遍果然如此。思考了一下,未弄清什么回事。没有办法,启用法宝sql server profilter抓取sql。
拿到sql 以后发现,该数据库多出一下语句:
use [db_name]
SELECT dtb.collation_name AS [Collation], CAST(DATABASEPROPERTYEX(dtb.name, 'Version') AS int) AS [Version]
, dtb.compatibility_level AS [CompatibilityLevel]
FROM master.sys.databases AS dtb where name = db_name()
通过这个语句的前一SQL语句发现原来,sys.databases系统视图中的collation_name 列的值为 NULL。
查看sql server 2008 帮助文档发现:(以下为摘自帮助文档)
sys.databases (Transact-SQL)
Microsoft SQL Server 实例中的每个数据库都对应一行。
如果数据库没有处于 ONLINE 状态,或者将 AUTO_CLOSE