не пытайтесь отобразить dbo на ваш логин. dbo - специальный пользователь.
Чтобы подключиться к SQL Server с использованием аутентификации SQL, вам нужно войти через логин, а не через пользователя (давайте пока оставим автономные базы данных в Denali вне обсуждения). Поэтому вы никогда не должны пытаться указать пользователя базы данных (например, dbo) в строке подключения. Я настоятельно рекомендую создать логин и затем создать пользователя на уровне базы данных с тем же именем, которое совпадает с логином - это гораздо менее запутанно, чем попытка сопоставить login_foo с user_bar. Я также рекомендую держаться подальше от специальных слов для пользователей или логинов (например, dbo).
- Я рекомендую изучить DDL и хранимые процедуры, необходимые для настройки этого, и перестать указывать и щелкать по интерфейсу. Хотя пользовательский интерфейс может казаться более быстрым для некоторых задач, очень сложно воспроизвести то, что вы сделали точно, и требуется много усилий, чтобы выяснить, какие параметры вы установили на вкладках в диалоговых окнах, которые мы можем ' не вижу. Если вы используете сценарий, вы можете опубликовать сценарий, и мы сможем увидеть все это, не задавая дополнительных вопросов, и вы также можете сохранить этот сценарий и сослаться на него (что будет, по крайней мере, так же хорошо, как ваша память, но почти наверняка лучше).
Вот как я могу добавить имя входа на сервер, поместить их в базу данных newdb как пользователя, добавить их в роль db_owner (не dbo) и установить для их базы данных по умолчанию значение newdb. Откройте новое окно запроса в Management Studio и подключитесь к мастеру, затем выполните следующее:
USE [master];
GO
CREATE LOGIN Ropstah_test WITH PASSWORD = 'secure password';
GO
USE newdb;
GO
CREATE USER Ropstah_test FROM LOGIN Ropstah_test;
GO
EXEC sp_addrolemember 'db_owner', 'Ropstah_test';
GO
USE [master];
GO
ALTER LOGIN Ropstah_test WITH DEFAULT_DATABASE = newdb;
GO
Теперь ваша строка подключения из .NET должна выглядеть следующим образом:
Data Source=.\SQLEXPRESS;Initial Catalog=newdb;User ID=Ropstah_test;Password=secure password;
Если это не сработает, я бы подтвердил, что ваше приложение ASP.NET работает на том же компьютере, что и экземпляр SQL Express. Веб-сервер также на вашем компьютере, верно? Если не считать этого, это должно работать, и если оно не работает, есть какая-то другая переменная, которая не очевидна. Вам не нужно делать пользователя фактическим владельцем базы данных для подключения, но если вышеприведенное все еще не решает проблему, посмотрите, меняет ли приведенный ниже скрипт поведение или хотя бы сообщение об ошибке, записанное в журнале:
USE newdb;
GO
DROP USER Ropstah_test;
GO
USE [master];
GO
ALTER AUTHORIZATION ON DATABASE::newdb TO Ropstah_test;
Это удаляет пользователя из базы данных, а затем повторно добавляет его в качестве официального владельца (это не то же самое, что роль в роли db_owner, которая по сути является просто сокращением для предоставления шаблона разрешений). Это не должно быть необходимым, но это может помочь изолировать, почему вы не можете заставить этот обычно простой процесс работать.