Строка подключения SQL-аутентификации SQL Server 2005 - PullRequest
1 голос
/ 10 августа 2009

Я создаю приложение, которое подключается к SQL Server 2005. В настоящее время оно использует проверку подлинности Windows, но я бы хотел переключиться на проверку подлинности SQL (я считаю, что иногда ее также называют смешанной проверкой подлинности). Моя текущая строка подключения:

"Data Source=LOCALHOST;Initial Catalog={0};Integrated Security=SSPI"

Это для проверки подлинности Windows, но для SQL, я думаю:

"Data Source=LOCALHOST;Initial Catalog={0};user id={1};password={2}"

Это правильный путь? Код предполагает, что:

  • {0} - это имя базы данных
  • {1} - это имя пользователя
  • {2} пароль

Я переключаюсь на аутентификацию SQL, потому что я думаю о подключении к экземпляру SQL Server на удаленном сервере - это правильный способ аутентификации SQL, и мне просто нужно было бы ввести IP, где "LOCALHOST" в настоящее время?

Спасибо!

ОБНОВЛЕНИЕ: Спасибо за все отличные ответы, ребята! Все они были замечательными и очень полезными, я даже не могу решить, какой из них присудить «принятый ответ», но я проголосовал за всех, потому что они потрясающие. Еще раз спасибо!

Ответы [ 5 ]

6 голосов
/ 10 августа 2009

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

2 голосов
/ 10 августа 2009

Для этого есть приложение: SqlConnectionStringBuilder :

SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
scsb.DataSource = "LOCALHOST";
scsb.InitialCatalog = ...;
scsb.IntegratedSecurity = false;
scsb.UserID = ...;
scsb.Password = ...;

SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
scsb.DataSource = "LOCALHOST";
scsb.InitialCatalog = ...;
scsb.IntegratedSecurity = true;

Затем можно извлечь строку подключения из свойства ConnectionString строителя. Этот способ защищает от ошибок, и вы можете позже изменить другие свойства, такие как ConnectTimeout или AsynchronousProcessing , и вам не придется запоминать синтаксис строки.

2 голосов
/ 10 августа 2009

Вы также можете использовать uid вместо «User Id» и pwd вместо «password»:

"Data Source=LOCALHOST;Initial Catalog={0};uid={1};pwd={2}"

Вместо LOCALHOST вы должны использовать либо IP-адрес удаленного компьютера, либо DNS-имя. Обратите внимание, что если на удаленном компьютере существует несколько экземпляров SQL Server, вам необходимо указать этот экземпляр в поле Источник данных, например «Источник данных = 11.22.33.44 \ SQLEXPRESS».

1 голос
/ 10 августа 2009

Если у вас нет общего домена Active Directory между локальным и удаленным сервером, то, я думаю, вам потребуется проверка подлинности SQL. Однако, если у вас действительно есть общий домен ADS, я рекомендую использовать его & ndash; в противном случае вам придется либо использовать общую учетную запись SQL для всех (а затем использовать соответствующий механизм для шифрования пароля), либо создать отдельные учетные записи SQL для каждого пользователя, тем самым дублируя данные.

Будьте очень осторожны с настройкой Начального каталога. Если это значение может быть введено пользовательским вводом, то оно может быть использовано для попытки атаковать другую базу данных, если у вас нет хороших проверок для защиты от нее. Извините, если я проповедую хору: -).

1 голос
/ 10 августа 2009

Да, это будет работать именно так, как вы сказали.

"Источник данных = 11.22.33.44; Исходный каталог = {0}; идентификатор пользователя = {1}; пароль = {2}"

...