Установление соединений в ADOMD.NET
Объект AdomdConnection используется в ADOMD.NET для открытия соединений с источниками аналитических данных, например базами данных служб Microsoft SQL Server Службы Analysis Services. Если необходимости в соединении больше нет, его следует явно закрыть.
Открытие соединения
Чтобы открыть соединение в ADOMD.NET, необходимо сначала задать строку соединения с допустимым источником аналитических данных и базой данных. Затем следует явно открыть соединение с этим источником данных.
Указание многомерного источника данных
Чтобы указать источник аналитических данных и базу данных, задается свойство ConnectionString объекта AdomdConnection. Строка соединения, задаваемая для свойства ConnectionString, является совместимой с OLE DB. При помощи указанной строки соединения компонент ADOMD.NET определяет, как подключаться к серверу.
Свойство ConnectionString можно задать либо в существующем объекте AdomdConnection, либо при создании экземпляра объекта AdomdConnection. В следующем коде демонстрируется, как задавать свойство ConnectionString при создании объекта [:Microsoft.AnalysisServices.AdomdClient.AdomdConnection]:
Dim advwrksConnection As New AdomdConnection("Data Source=localhost;Catalog=AdventureWorksAS2008R2")
System.Diagnostics.Debug.Writeline(advwrksConnection.ConnectionString)
AdomdConnection advwrksConnection = new AdomdConnection("Data Source=localhost;Catalog=AdventureWorksAS2008R2");
System.Diagnostics.Debug.Writeline(advwrksConnection.ConnectionString);
Открытие соединения с источником данных
Задав строку соединения, следует открыть соединение при помощи метода Open. При открытии объекта AdomdConnection для соединения можно задать различные уровни безопасности. Используемый уровень безопасности соединения зависит от значения параметра строки соединения ProtectionLevel. Дополнительные сведения об открытии безопасных соединений в ADOMD.NET см. в разделе Установка безопасных соединений в ADOMD.NET.
Работа с соединением
Каждое открытое соединение существует в рамках сеанса, который поддерживает операции с сохранением состояния. Сеанс может совместно использоваться несколькими открытыми соединениями. Совместное использование сеанса позволяет нескольким клиентам пользоваться одним контекстом. Дополнительные сведения см. в разделе Работа с соединениями и сеансами в ADOMD.NET.
Открытое соединение можно использовать для получения метаданных, данных и выполнения команд. Дополнительные сведения см. в разделах Получение метаданных из источника аналитических данных, Получение данных из источника аналитических данных и Выполнение команд в источнике аналитических данных.
Когда соединение открыто, можно получать данные, метаданные и выполнять команды из транзакции READ-COMMITTED, в которой во время чтения данных устанавливаются совмещаемые блокировки для предотвращения чтения «грязных» данных. Данные по-прежнему можно изменять до окончания транзакции, что вызывает чтение без возможности повторения или недействительные данные. Дополнительные сведения см. в разделе Выполнение транзакций в ADOMD.NET.
Закрытие соединения
Рекомендуется явно закрывать объект AdomdConnection, как только необходимость в соединении отпадает. Чтобы явно закрыть соединение, используются методы Close и Dispose объекта AdomdConnection.
Соединение, которое не закрывается явно, а само выходит из области действия, может достаточно долго не освобождать ресурсы сервера, что не позволяет клиентским приложениям служб Службы Analysis Services с высокой степенью параллелизма эффективно открывать новые соединения. В зависимости от того, как было создано соединение, сеанс, используемый объектом AdomdConnection, может остаться активным, если соединение не было явно закрыто.
Дополнительные сведения о сеансах см. в разделе Работа с соединениями и сеансами в ADOMD.NET.
Важно! |
---|
В методе Finalize любого реализованного класса не следует вызывать методы Close или Dispose объекта AdomdConnection, объекта AdomdDataReader или любого другого управляемого объекта. В методе завершения следует освобождать только неуправляемые ресурсы, которыми непосредственно владеет реализованный класс. Если реализованный класс не владеет какими-либо неуправляемыми ресурсами, не включайте в его определение метод Finalize. |