Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Закрытие соединений

Рекомендуется всегда закрывать соединение после использования, чтобы обеспечить его возврат в пул. Блок Using в Visual Basic или C# автоматически удаляет соединение при выходе в коде из блока даже при наличии необработанного исключения.

Также можно использовать методы CloseилиDisposeобъекта соединения для используемого поставщика. Соединения, которые явно не закрыты, нельзя добавить или вернуть в пул. Например, соединение, которое вышло за пределы области, но явно закрыто не было, будет возвращено в пул соединений только в том случае, если был достигнут максимальный размер этого пула, а соединение еще действует.

Установка соединения посредством кода (ado.Net)

Для создания соединения с Microsoft SQL Server 7.0 или более поздней версии используется объект SqlConnectionпоставщика данных .NET Framework для SQL Server. Для соединения с источником данных OLE DB или с базой данных Microsoft SQL Server 6.xи более ранних версий используется объектOleDbConnectionпоставщика данных .NET Framework для OLE DB. Для соединения с источником данных используется объектOdbcConnectionпоставщика данных .NET Framework для ODBC. Для соединения с источником данных Oracle используется объектOracleConnectionпоставщика данных .NET Framework для Oracle. Сведения о безопасном хранении и получение строк соединения см. в разделеЗащита сведений о соединении (ADO.NET).

Соединение с mssql Server

Свойство SqlConnection.ConnectionString- возвращает или задает строку, используемую для подключения к базе данных SQL Server.

Пространство имен:  System.Data.SqlClient Сборка:  System.Data (в System.Data.dll)

Синтаксис

[SettingsBindableAttribute(true)]

public override string ConnectionString { get; set; }

Значение свойства

Тип: System.String. Значением по умолчанию является пустая строка.

Можно использовать новый объект SqlConnectionStringBuilder для составления допустимых строк подключения во время выполнения.

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

Для подключения к локальному компьютеру следует указывать имя сервера имя "(local)". Если имя сервера не задано, будет сделана попытка установить соединение с экземпляром по умолчанию на локальном компьютере.

При сбросе ConnectionString для закрытого подключения сбрасываются все значения строки подключения (и связанные свойства), включая пароль. Например, если выполняется сброс строки подключения, содержащей "Database=AdventureWorks", и последующая установка для нее значения "Data Source=myserver;Integrated Security=true", свойство Database больше не будет иметь значение "AdventureWorks".

Сразу после установки строки подключения осуществляется ее анализ. Если при разборе строки обнаружены синтаксические ошибки, генерируется исключение среды выполнения, например ArgumentException. Другие ошибки могут быть обнаружены только при попытке открытия подключения.

Базовый формат строки подключения содержит последовательность пар "ключевое слово — значение", разделенных символами точки с запятой. Знак равенства (=) связывает каждое ключевое слово с его значением. Чтобы включить значение, содержащее символ точки с запятой, одинарной или двойной кавычки, необходимо заключить это значение в двойные кавычки. Если значение содержит как символ точки с запятой, так и символ двойной кавычки, необходимо заключить значение в одинарные кавычки. Кроме того, одинарную кавычку можно использовать, если значение начинается с символа двойной кавычки. И наоборот, если значение начинается с одинарной кавычки, можно использовать символ двойной кавычки. Если значение содержит символы как одинарных, так и двойных кавычек, то внутри него необходимо повторить два раза символ тех кавычек, в которые оно заключено.

Чтобы включить в значение строки начальные или концевые пробелы, необходимо заключить конечную строку в одинарные или двойные кавычки. Любые начальные или концевые пробелы вокруг значений, которые относятся к типу целочисленных, логических или перечислимых значений, игнорируются, даже если они заключены в кавычки. Тем не менее, пробелы сохраняются внутри ключевого слова или значения, которое является строковым литералом. При использовании платформы .NET Framework версии 1.1 или более поздней одинарные или двойные кавычки могут использоваться в строке подключения без разделителей (например, Data Source= my'Server или Data Source= my"Server), если символ кавычки не является первым или последним символом значения.

Ключевые слова не зависят от регистра символов.

В приведенной ниже таблице представлены допустимые имена для значений ключевых слов в ConnectionString.

Ключевое слово

По умолчанию

Свойство

Имя приложения,

Неприменимо

Имя приложения, или, если оно отсутствует, '.Net SqlClient Data Provider'.

Async

false

Когда задано значение true, поддерживаются асинхронные операции. Распознаваемые значения: true, false, yes и no.

AttachDBFilename

— или —

extended properties

— или —

Initial File Name

Неприменимо

Имя основного файла базы данных, включая полный путь к подключаемой базе данных. AttachDBFilename поддерживается только для первичных файлов данных с расширением MDF.

Если присоединение завершается неудачей, первичный файл база данных доступен только для чтения.

Путь может быть абсолютным или относительным, заданным с использованием строки подстановки DataDirectory. При использовании строки подстановки DataDirectory файл базы данных должен существовать в каталоге, на который указывает строка подстановки.

Примечание

Имена путей удаленного сервера, HTTP и UNC не поддерживаются.

Имя базы данных должно быть задано с ключевым словом database или одним из его псевдонимов, как в следующем примере:

"AttachDbFileName=|DataDirectory|\data\YourDB.mdf;integrated security=true;database=YourDatabase"

Если файл журнала существует в том же каталоге, что и файл базы данных, и при подключении первичного файла данных используется ключевое слово database, генерируется ошибка. В таком случае следует удалить файл журнала. После присоединения базы данных новый файл журнала будет автоматически сгенерирован по физическому пути.

Connect Timeout

— или —

Connection Timeout

15

Продолжительность времени ожидания подключения к серверу (в секундах) перед прекращением попытки подключения и генерацией ошибки.

Context Connection

false

true, если должно быть установлено внутрипроцессное подключение к SQL Server.

Current Language

Неприменимо

Имя записи языка SQL-сервера.

Источник данных

— или —

Server

— или —

Адрес

— или —

Addr

— или —

Network Address

Неприменимо

Имя или сетевой адрес экземпляра SQL Server, к которому осуществляется подключение. После имени сервера может быть задан номер порта:

server=tcp:servername, portnumber

При задании локального экземпляра всегда используйте имя (local). Чтобы указать протокол, добавьте один из следующих префиксов:

np:(local), tcp:(local), lpc:(local)

Примечание

ADO.NET 2.0 не поддерживает выполнение асинхронных команд через общую память для SQL Server версии 2000 или более ранней версии. Однако вместо общей памяти можно принудительно использовать TCP, прибавив префикс tcp: к имени сервера в строке подключения или задав имя сервера localhost.

Encrypt

false

Если задано значение true, SQL Server использует шифрование SSL для всех данных, передаваемых между клиентом и сервером, если сервер имеет установленный сертификат. Распознаваемые значения: true, false, yes и no.

Enlist

'true'

Значение true указывает, что пулер подключений SQL Server автоматически включает подключение в контекст текущей транзакции создавшего потока.

Failover Partner

Неприменимо

Имя резервного сервера, на котором настроено зеркалирование базы данных.

Ключевое слово Failover Partner не поддерживается платформой .NET Framework версии 1.0 или 1.1.

Initial Catalog

— или —

Database

Неприменимо

Имя базы данных.

Integrated Security

— или —

Trusted_Connection

false

Если задано значение false, в подключении заданы также параметры User ID и Password. Если задано значение true, для проверки подлинности используются текущие учетные данные Windows.

Распознаваемые значения: true, false, yes, no и sspi (настоятельно рекомендуется), что эквивалентно true.

Если ИД пользователя и пароль заданы и встроенные средства безопасности установлено значение "true", ИД пользователя и пароль будут проигнорированы, и использована встроенная безопасность.

MultipleActiveResultSets

false

Если задано значение true, приложение может поддерживать несколько результирующих наборов данных (MARS). Если задано значение false, приложение должно обработать или отменить все результирующие наборы одной массовой операции, прежде чем выполнять через то же подключение другую пакетную операцию.

Распознаваемые значения: true и false.

Этот ключевое слово не поддерживается платформой .NET Framework версии 1.0 или 1.1.

Network Library

— или —

Net

dbmssocn

Сетевая библиотека, используемая для установки подключения к экземпляру SQL Server. Поддерживаются следующие значения:

dbnmpntw (именованные каналы)

dbmsrpcn (Multiprotocol, Windows RPC)

dbmsadsn (Apple Talk)

dbmsgnet (VIA)

dbmslpcn (общая память)

dbmsspxn (IPX/SPX)

dbmssocn (TCP/IP)

Dbmsvinn (Banyan Vines)

В системе, к которой осуществляется подключение, должна быть установлена соответствующая сетевая DLL. Если сеть не указана и используется локальный сервер (например, "." или "(local)"), используемый общей памятью. В этом примере используются сетевая библиотека Win32 Winsock TCP/IP (dbmssocn) и порт 1433.

Network Library=dbmssocn;Data Source=000.000.000.000,1433;

Packet Size

8192

Размер сетевых пакетов (в байтах), используемых при взаимодействии с экземпляром SQL Server.

Пароль

— или —

Pwd

Неприменимо

Пароль для входа в SQL-сервер. Не рекомендуется. Чтобы обеспечить наивысший уровень безопасности, настоятельно рекомендуется использовать вместо этого ключевое слово Integrated Security или Trusted_Connection.

Persist Security Info

false

Когда задано значение false или no (настоятельно рекомендуется), важные сведения (такие, как пароль) не возвращаются как часть подключения, если оно открыто или когда-либо находилось в открытом состоянии. При сбросе строки подключения сбрасываются также все ее значения, включая пароль. Распознаваемые значения: true, false, yes и no.

Планирование

Неприменимо

Задает план подключения. Будет вызван объект ArgumentException, если в строке подключения также указывается следующее: партнер по обеспечению отказоустойчивости, AttachDbFileName, UserInstance = true или contextConnection = true.

Репликация

false

true, если поддерживается репликация с использованием данного соединения.

Transaction Binding

Implicit Unbind

Управляет связыванием подключения с присоединенной транзакцией System.Transactions.

Доступны следующие значения:

Transaction Binding=Implicit Unbind;

Transaction Binding=Explicit Unbind;

Implicit Unbind указывает, что следует отсоединять подключение от транзакции, когда она завершается. После отсоединения дополнительные запросы через это подключение выполняются в режиме автофиксации. Свойство System.Transactions.Transaction.Current не проверяется при выполнении запросов, когда транзакция активна. После завершения транзакции дополнительные запросы выполняются в режиме автофиксации.

Explicit Unbind указывает, что подключение должно оставаться присоединенным к транзакции до тех пор, пока оно не будет закрыто или не будет явно вызван метод SqlConnection.TransactionEnlist(null). Исключение InvalidOperationException выбрасывается, если Transaction.Current не является присоединенной или активной транзакцией.

TrustServerCertificate

false

Если задано значение true, то в случае, если для проверки доверия не выполняется обход цепочки сертификатов, для шифрования канала используется SSL. Если параметр TrustServerCertificate имеет значение true, а параметр Encrypt — false, канал не шифруется. Распознаваемые значения: true, false, yes и no. Дополнительные сведения см. в разделе Синтаксис строки соединения (ADO.NET).

Type System Version

Неприменимо

Строковое значение, определяющее систему типов, ожидаемую приложением. Доступны следующие значения:

Type System Version=SQL Server 2000;

Type System Version=SQL Server 2005;

Type System Version=SQL Server 2008;

Type System Version=Latest;

Если задано значение SQL Server 2000, используется система типов SQL Server 2000. При подключении к экземпляру SQL Server 2005 выполняются следующие преобразования.

XML to NTEXT

UDT to VARBINARY

VARCHAR(MAX), NVARCHAR(MAX) и VARBINARY(MAX) с TEXT, NEXT и IMAGE соответственно.

Если задано значение SQL Server 2005, используется система типов SQL Server 2005. Для текущей версии ADO.NET преобразование не выполняется.

Если задано значение Latest, используется последняя версия этой пары клиент-сервер. При обновлении клиентского и серверного компонентов она автоматически обновляется.

Идентификатор пользователя

Неприменимо

Учетная запись входа в SQL Server. Не рекомендуется. Чтобы обеспечить наивысший уровень безопасности, настоятельно рекомендуется использовать вместо этого ключевое слово Integrated Security или Trusted_Connection.

User Instance

false

Значение, указывающее, следует ли перенаправлять подключение от используемого по умолчанию экземпляра SQL Server Express к запущенному исполняющей средой экземпляру, который выполняется с учетной записью вызывающего кода.

Workstation ID

Имя локального компьютера

Имя рабочей станции, подключающейся к SQL Server.

В приведенной ниже таблице представлены допустимые имена для значений пулинга подключений в ConnectionString. Дополнительные сведения см. в разделе Организация пулов соединений SQL Server (ADO.NET).

Name

По умолчанию

Свойство

Connection Lifetime

0

Когда подключение возвращается в пул, время его создания сравнивается с текущим и подключение удаляется, если его время жизни (в секундах) превышает значение, указанное в Connection Lifetime. Данный подход применяется в кластерных конфигурациях для принудительного выравнивания нагрузки между работающим и только что запущенным сервером.

В случае нулевого (0) значения подключения в пуле будут иметь максимальный таймаут.

Enlist

'true'

Если задано значение true, процесс, обслуживающий пул, автоматически добавляет подключение в контекст текущей транзакции создавшего потока. Распознаваемые значения: true, false, yes и no.

Load Balance Timeout

0

Минимальное время ожидания в секундах перед удалением подключения из пула.

Max Pool Size

100

Максимальное разрешенное количество подключений в пуле.

Min Pool Size

0

Минимальное разрешенное количество подключений в пуле.

Pooling

'true'

Если задано значение true, объект SQLConnection удаляется из соответствующего пула или при необходимости создается и добавляется в соответствующий пул. Распознаваемые значения: true, false, yes и no.

При задании ключевых слов или значений пулинга подключений, требующих логических значений, можно использовать yes вместо true и no вместо false. Целочисленные значения представляются в виде строк.