【发布时间】:2014-03-17 18:52:27
【问题描述】:
我的服务器只有两个数据库;在一个数据库中,我有一个表:
CREATE TABLE [dbo].[WR_Shipping](
[ShipmentID] [int] NOT NULL,
[OrderNumber] [int] NOT NULL,
[ShippedOn] [datetime] NULL,
[ShippingMethod] [nvarchar](100) NULL,
[ShippingTrackingNumber] [nvarchar](100) NULL,
[ShippedVIA] [nvarchar](100) NULL,
[TrackingURLAppConfig] [nvarchar](100) NULL,
[ShipmentNotes] [nvarchar](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
当我以管理员身份登录 SQL Server 管理器时,我可以毫无问题地从表中读取数据。我的 Web 应用程序使用不同的用户 ID 登录到服务器。我检查了该用户 ID 对整个数据库具有 SELECT、UPDATE、INSERT、DELETE 和 EXECUTE 权限。我还检查以确保该表的有效权限对于该用户是正确的。我什至像 Web 应用程序一样登录到 SSMS,并且可以毫无问题地执行SELECT * FROM WR_Shipping。但是,我可以毫无问题地执行SELECT * FROM Product。
我已经多次删除并重新创建了表。我的生产数据库中运行着同一个表,我可以使用相同的代码毫无问题地连接到它。
我已经尝试了所有我能想到的命名表的方法:WR_Shipping、wr_shipping、dbo.WR_Shipping、[database].dbo.WR_Shipping。这些都不起作用;都产生相同的错误。但是,它们都可以在 SQL Server 管理控制台中正常工作。我什至不能从网络应用程序运行像SELECT * FROM WR_Shipping 这样简单的东西。
我收到的错误是System.Data.SqlClient.SqlException: Invalid object name 'WR_Shipping'. 当我尝试执行 SqlCommand.ExecuteReader 时抛出此错误。该命令位于我在整个网络应用程序中使用的例程中。它接受一个字符串(SQL)和一个连接,并返回一个IDataReader。
更新
我已经尝试了这里建议的所有方法,但均无济于事。我尝试的每个查询都有效,即使针对同一数据库和架构中的其他表也是如此。这一张桌子从来没有工作过。我最终克隆了生产数据库并将其用作我的测试数据库,而不是继续使用该数据库。以前我刚刚对两个数据库(生产和测试)进行了相同的更改。
【问题讨论】:
-
您的 sql 脚本仅从该表中检索数据?
-
正确。我什至无法执行
select * from wr_shipping而不会出现错误。 -
请澄清一下:如果您使用您在代码中使用的用户 ID 登录 SSMS,您可以从表中选择吗?
-
同一台服务器下有多少个数据库?是的,当您登录 SSMS 时,您在连接字符串中使用了销售登录信息,应该没有问题。
-
@ThitLwinOo 服务器上有两个数据库。
标签: asp.net sql .net sql-server database