避免 SQL Server 2005 表具有相同的名称,但所有者不同

避免 SQL Server 2005 表具有相同的名称,但所有者不同

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。

相关内容