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別の を実行すると、正常に動作します。serverconnection 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

さらにデバッグを重ねた結果、コードが実際には間違ったサーバーで実行されていることがわかりました。したがって、私が投稿した内容に基づいてバグを見つける方法は実際にはありませんが、やり取りに基づいて Tony は正しい方向に進んでいたと思います。

于 2012-08-28T19:09:10.353 に答える
0

あなたの場合はコピーペーストの問題です.[データベース]をDB名に変更してください.

于 2012-08-28T15:04:03.590 に答える