Linq игнорирует строку подключения и пытается получить доступ к неверной базе данных.Исключение - PullRequest
1 голос
/ 13 января 2011

Я использую Linq для файла DBML, я полагаю, что это Linq2SQL.

Во время разработки я использовал промежуточную базу данных, называемую "Stage", и теперь использую другую базу данных.Мои права на промежуточную базу данных были удалены.

Когда я использую следующую строку подключения

 <add name="Management_Report_Emailer.Properties.Settings.DWConnectionString"
            connectionString="Data Source=biqasql01;Initial Catalog=DW;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>

и затем передаю эту внутреннюю строку в Linq

DWDataContext DWctx = new DWDataContext(CurrentServerConnection);

Некоторыеиз моих запросов linq работают, некоторые нет.Тот, который не работает, выдает это исключение

Error The server principal "mydomain\myusername" is not able to access the
database "DWStage" under the current security context.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolea
n breakConnection)
   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception
, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cm
dHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, Tds
ParserStateObject stateObj)
   at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, Run
Behavior runBehavior, String resetOptionsString)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBe
havior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehav
ior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult
 result)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehav
ior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, S
tring method)
   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behav
ior)
   at System.Data.Common.DbCommand.ExecuteReader()
   at System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo
 queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs
, ICompiledSubQuery[] subQueries, Object lastResult)
   at System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryI
nfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompile
dSubQuery[] subQueries)
   at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider
.Execute(Expression query)
   at System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.Get
Enumerator()
   at Management_Report_Emailer.Program.Main(String[] args) in C:\dev\Management
ReportMail\Management Report Emailer\Program.cs:line 181

ВОПРОС

Почему, черт возьми, он пытается получить доступ к неправильной базе данных "DWStage" ???Я сократил это до четырех строк кода в этом приложении, и ни одна из них не ссылается на эту строку.Я выполнил поиск по этой строке, но нигде не могу ее найти.

1 Ответ

1 голос
/ 14 января 2011

Правильный ответ: Проверьте свое мнение!

Я использую таблицу в другой базе данных в ссылочном представлении, к которому у моей учетной записи нет доступа. SQL правильно сообщает, что я не могу просмотреть эту другую таблицу.

...