
- •Глава 12. Обработка ошибок с помощью исключений
- •Глава 13. Перегрузка операторов и нестандартные преобразования
- •Глава 14. Делегаты и обработчики событий
- •Глава 15. Программирование многопоточности
- •Получение метаданных с помощью отражения
- •Глава 17. Взаимодействие с неуправляемым кодом
- •Глава 18. Работа со сборками
- •Чтение полей разных типов
- •Выполнение sql-команд
- •Настройки
- •Страницы
- •Примеры
- •Клиентские приложения
- •Влияние Microsoft
- •Влияние vb.Net
- •Разработка gui
- •Разработка веб-приложений
- •Влияние платформы на самосознание программистов
- •Тигры рвутся вперёд
- •Благодарности
- •Введение
- •Предыстория
- •Использование кода
- •Устанавливаем любимое соединение
- •Обзор команд
- •Не забывайте закрыть, когда вы закончили!
- •Когда хорошие соединения становятся плохими
- •Свободные концы
- •Введение
- •Использование кода
- •Пример вывода
- •Интересующие моменты
- •Не много теории...
- •Прозрачность (Transparency)
- •Пользовательские редакторы стадии проектирования
- •Расширение функциональности контрола Shape
- •Пример - Демо Приложение
- •Возможные улучшения
- •Заключение
Не забывайте закрыть, когда вы закончили!
Закрытие соединения так же просто, как и открытие. Просто вызовите 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% и снова выполните обе строки.