SQL Server 2005 出现此行为的最可能原因是什么?
测试 #1:
我运行 Management Studio Express,使用“Windows 身份验证”连接到我的本地数据库,并看到我有 1 个数据库和 1 个名为 dbo.MyTable 的表。
运行“SELECT * FROM MyTable”(和 dbo.MyTable)显示它确实存在,但是为空。
测试 #2:
我重新运行 Management Studio Express,使用“sql 身份验证”myLogin/myPassword 连接到我的 1 数据库,并看到我有一个 dbo.MyTable。
运行“SELECT * FROM MyTable”(和 dbo.MyTable)得到:
Msg 229, Level 14, State 5, Line 2
The SELECT permission was denied on the object 'MyTable', database 'master', schema 'dbo'.
测试 #3:
运行一些常见的 vb.net 代码,使用我的 SQL 身份验证 myLogin/myPassword,表明我可以毫无问题地读取/写入 MyTable......并且该表包含数百条良好的记录。
我真的有 2-3 个不同的表吗?(我只需要 1 个。)我真的绝不需要有“多个表,具有相同的名称,但拥有不同的所有者”。
这里发生了什么?
答案1
您给出的错误表明,使用 SQL 身份验证的 Management Studio Express 连接正在尝试查询master
数据库中的 MyTable。我非常怀疑这是您想要使用的数据库。
在 Management Studio 中,确保选择了数据库。您可以使用工具栏中的下拉菜单,或者,假设您的数据库名为 MyDatabase,您可以执行 USE 命令,然后执行 SELECT。
USE MyDatabase
SELECT * FROM MyTable
您的 VB.NET 应用程序的连接字符串可能已在其中设置了此项。它将是属性database
或属性initial catalog
,并且值将是 MyDatabase。