Если добавить [user instances = true] в строку подключения, выдается исключение - PullRequest
4 голосов
/ 04 марта 2012

Сведения об исключении:

System.Data.SqlClient.SqlException: невозможно открыть базу данных запросов входа в систему "RealtyDB" Вход в систему не удался. не удалось войти в аккаунт "FAFHN24BNK43 \ JKAD754".

Моя строка подключения выглядит следующим образом:

add name = "ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;User Instance=True;Initial Catalog=RealtyDB;Integrated Security=SSPI;"
         providerName="System.Data.SqlClient"       

если я удалил [User Instance=True;], с моим приложением все будет в порядке.

Кто-нибудь знает почему?

Ответы [ 2 ]

6 голосов
/ 04 марта 2012

Я только когда-либо видел функцию экземпляра пользователя, используемую в комбинации с AttachDbFileName. Другими словами, вы не можете подключиться к базе данных, которая уже подключена к работающему экземпляру SQL Server, и сказать SQL Server запустить новый экземпляр для этой базы данных, поскольку только один экземпляр может «владеть» базой данных на время. Когда вы используете AttachDbFileName, он говорит SQL Server сделать копию этого файла MDF для использования приложения.

Итак, если только вы не собираетесь использовать эту функцию, я снова предложу вам просто удалить параметр User Instance = true из строки подключения.

(Также может быть интересно отметить, что эта сомнительно полезная функция устарела.)

1 голос
/ 18 марта 2014

Я согласен с Аароном Бертраном.Строка подключения должна выглядеть следующим образом:

connectionString = "источник данных =. \ SQLEXPRESS; Интегрированная безопасность = SSPI; AttachDBFilename = | DataDirectory | \ appdb.mdf; Пользовательский экземпляр = true"

...