Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C# часть 2.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.3 Mб
Скачать

Не забывайте закрыть, когда вы закончили!

Закрытие соединения так же просто, как и открытие. Просто вызовите SqlConnection.Close(), но не забывайте поместить его в блок try/catch, потому что, как и SqlConnection.Open(), он не возвращает ошибок, а выбрасывает исключение.

try

{

myConnection.Close();

}

catch(Exception e)

{

Console.WriteLine(e.ToString());

}

Когда хорошие соединения становятся плохими

Доверенные соединения всегда были загадкой для меня, я никогда не мог понять, почему IIS и SQL-сервер не могли поладить. К счастью Pete (moredip) обратил внимание на полезный раздел документации. Чтобы сделать его более простым, я решил добавить его в эту статью. Я разбил его на две разные секции: IIS 6 и другие версии IIS. Чтобы начать, убедитесь, что osql.exe находится в ваших системных путях, или найдите его вручную. Он должен находится там же, где и ваш SQL Server в каталоге 2000 server/client tools. На моей системе это что-то вроде этого: %Install Directory%80ToolsBINN. Для простоты я буду использовать псевдо-переменные в примерах, потому не смущайтесь. Например, псевдо-переменная будет выглядеть так: %VARIABLE%. Сервер будет указываться как %SERVER%%INSTANCE%. Если вы не используете имена экземпляров, это может быть просто %SERVER%, (local), если сервер является локальной машиной. Если же используете имена экземпляров, это будет что-то вроде ServerNameServerInstance и т.д. Я также буду использовать %DATABASE% для указания названия базы данных.

IIS 6 на Windows 2003 Server

Я знаю, что это будет работать на IIS 6 под Windows 2003 Server, потому что делал это, а также потому, что сейчас это единственная ОС с IIS 6. На IIS 6 процесс ASP.NET выполняется под аккаунтом 'NT AUTHORITYNETWORK SERVICE'.

osql -E -S %SERVER%%INSTANCE% -Q "sp_grantlogin 'NT AUTHORITYNETWORK SERVICE'"

Теперь ваше приложение ASP.NET может логиниться на сервер. Все, что осталось - дать права на базы данных.

osql -E -S %SERVER%%INSTANCE% -d %DATABASE% -Q

"sp_grantdbaccess 'NT AUTHORITYNETWORK SERVICE'"

osql -E -S %SERVER%%INSTANCE% -d %DATABASE% -Q

"sp_addrolemember 'db_owner', 'NT AUTHORITYNETWORK SERVICE'"

Эти 2 строки дают права на одну из баз данных. Таким образом, если вы хотите дать права на другую базу данных - просто измените %DATABASE% и выполните обе строки.

IIS 5.1

Это должно работать на всех других комбинациях с IIS 5.1 (возможны разные версии). Единственное отличие между IIS 5.1 и IIS 6 - это аккаунт, под которым выполняется процесс ASP.NET. IIS 5.1 работает под %MACHINENAME%ASPNET, где %MACHINENAME% - это название машины.

osql -E -S %SERVER%%INSTANCE% -Q "sp_grantlogin '%MACHINENAME%ASPNET'"

Теперь ваше приложение ASP.NET может логиниться на сервер. Все, что осталось - это дать права на базы данных.

osql -E -S %SERVER%%INSTANCE% -d %DATABASE%

-Q "sp_grantdbaccess '%MACHINENAME%ASPNET'"

osql -E -S %SERVER%%INSTANCE% -d %DATABASE%

-Q "sp_addrolemember 'db_owner', '%MACHINENAME%ASPNET'"

Эти 2 строки дают права на одну базу данных. Если вы хотите дать права на другую базу, просто измените %DATABASE% и снова выполните обе строки.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]