Поделиться через


Соединения в ADOMD.NET

в ADOMD.NET объект используется AdomdConnection для открытия подключений к источникам аналитических данных, таким как базы данных Microsoft SQL Server Analysis Services. Если необходимости в соединении больше нет, его следует явно закрыть.

Открытие соединения

Чтобы открыть соединение в ADOMD.NET, необходимо сначала задать строку соединения с допустимым источником аналитических данных и базой данных. Затем следует явно открыть соединение с этим источником данных.

Указание многомерного источника данных

Чтобы указать источник аналитических данных и базу данных, необходимо задать ConnectionString свойство AdomdConnection объекта. Строка подключения, указанная для ConnectionString свойства, является строкой, совместимой с OLE DB. При помощи указанной строки соединения компонент ADOMD.NET определяет, как подключаться к серверу.

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

Dim advwrksConnection As New AdomdConnection("Data Source=localhost;Catalog=AdventureWorksAS")  
System.Diagnostics.Debug.Writeline(advwrksConnection.ConnectionString)  
AdomdConnection advwrksConnection = new AdomdConnection("Data Source=localhost;Catalog=AdventureWorksAS");  
System.Diagnostics.Debug.Writeline(advwrksConnection.ConnectionString);  

Открытие соединения с источником данных

После указания строки подключения необходимо использовать Open метод, чтобы открыть соединение. При открытии AdomdConnection объекта можно задать различные уровни безопасности для соединения. Уровень безопасности, используемый для соединения, зависит от значения параметра строки подключения ProtectionLevel . Дополнительные сведения об открытии безопасных соединений в ADOMD.NET см. в разделе Установка безопасных соединений в ADOMD.NET.

Работа с соединением

Каждое открытое соединение существует в рамках сеанса, который поддерживает операции с сохранением состояния. Сеанс может совместно использоваться несколькими открытыми соединениями. Совместное использование сеанса позволяет нескольким клиентам пользоваться одним контекстом. Дополнительные сведения см. в статье работа с подключениями и сеансами в ADOMD.NET.

Открытое соединение можно использовать для получения метаданных, данных и выполнения команд. Дополнительные сведения см. в статьях Получение метаданных из источника аналитических данных, Получение данных из источника аналитическихданных и исполнение команд с источником аналитических данных.

Когда соединение открыто, можно получать данные, метаданные и выполнять команды из транзакции READ-COMMITTED, в которой во время чтения данных устанавливаются совмещаемые блокировки для предотвращения чтения «грязных» данных. Данные по-прежнему можно изменять до окончания транзакции, что вызывает чтение без возможности повторения или фантомные данные. Дополнительные сведения см. в разделе Выполнение транзакций в ADOMD.NET.

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

Рекомендуется явным образом закрыть AdomdConnection объект, как только соединение больше не требуется. Чтобы явно закрыть соединение, используйте методы AdomdConnectionClose и Dispose объекта.

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

Дополнительные сведения о сеансах см. в статье работа с подключениями и сеансами в ADOMD.NET.

Важно!

В методе Finalize любого реализованного класса не следует вызывать методы AdomdConnectionClose или Dispose объекта, AdomdDataReader объекта или любого другого управляемого объекта. В методе завершения следует освобождать только неуправляемые ресурсы, которыми непосредственно владеет реализованный класс. Если реализованный класс не владеет какими-либо неуправляемыми ресурсами, не включайте метод Finalize в определение класса.