通过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 的完全相同的连接字符串,所以我想这让我怀疑这将是一个权限问题。仍然不知道问题是什么。