1

通过ASP/ C# .NET页面运行以下代码时出现错误:

 SELECT 1 FROM [database].INFORMATION_SCHEMA.TABLES 
 WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='example_table'

当我在sql management studio query窗口中运行代码时,它运行得很好。它也只针对 1 个特定的server问题 - 当我在不同server的情况下运行时connection string,它工作正常。

我已经搜索了互联网,我似乎可以找到的所有答案都是区分大小写存在问题,但我使用的都是大写字母,并且有问题的表格SQL_Latin1_General_CP1_CI_AS collation无论如何都在使用。

基于这一切,我很确定这是某种权限问题,但我不确定在哪里看。

我得到的错误:

无效的对象名称“database.INFORMATION_SCHEMA.TABLES”。

连接字符串:

<add name="connectionName" connectionString="Data Source=servername; Initial Catalog=master; User ID=user; Password=pw" providerName="System.Data.SqlClient"/>

更新:

更多信息:我从一些基本上做同样事情的旧 VB 东西改编了这段代码。VB 代码在相同的服务器和数据库上运行相同的精确查询,但它可以工作。

VB代码:

Dim connStr As String = ConfigurationManager.ConnectionStrings("connectionName").ConnectionString
Dim objConnection As SqlConnection = New SqlConnection(connStr)
Dim objCommand As SqlCommand = New SqlCommand("SELECT 1 FROM [database].INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='example_table'", objConnection)
objCommand.CommandType = CommandType.Text

objConnection.Open()

C# 和 VB 代码都使用来自 web.config 的完全相同的连接字符串,所以我想这让我怀疑这将是一个权限问题。仍然不知道问题是什么。

4

2 回答 2

0

我希望在你的情况下这是一个复制粘贴问题,用你的数据库名称更改[数据库]。

于 2012-08-28T15:04:03.590 回答
0

经过多次调试,我能够确定代码实际上是在错误的服务器上运行的。因此,根据我发布的内容,实际上没有任何方法可以找到错误,但我认为托尼基于来回来回走在正确的轨道上。

于 2012-08-28T19:09:10.353 回答