Введение в SQL-DMO
Microsoft SQL Server в настоящее время является популярной системой управления базами данных. Благодаря непрерывному улучшению и разработке SQL Server и идеальной комбинацией с собственными операционными системами серии Windows Microsoft, он обеспечивает лучшую производительность и простоту использования на платформе Windows, поэтому он все больше ценится. Полное название SQL-DMO-это SQL-распределенные объекты управления. Это коллекция, содержащая набор композиций с двойными интерфейсами. Через SQL-DMO мы можем управлять управлением базой данных и управлением репликацией, который управляет SQL Server. Поскольку SQL-DMO является набором COM, он может использоваться любым инструментом разработки, который может использовать COM, включая VB, Delphi, VC, BCB, ASP и т. Д., Практически все инструменты разработки на платформе Windows.
SQL-DMO использует
Зачем нам использовать SQL-DMO для управления базами данных? Разве для нас недостаточно управлять базой данных, используя Enterprise Manager и сценарии T-SQL? SQL-DMO может выполнять гибкие, настраиваемые и эффективные действия по управлению базами данных. Поскольку SQL-DMO предоставляет интерфейс управления для SQL Server, благодаря программированию, вы можете настроить управление в соответствии с вашими потребностями. Например, если мы управляем крупной организацией со многими экземплярами SQL Server. Теперь вам нужно добавить пользователя во все экземпляры SQL Server в вашей организации Вы используете программирование SQL-DMO для реализации вызовов, оно может быть легко и эффективно выполнить с одним циклом. По мнению автора, что более важно, так это то, что MSDE можно управлять с помощью SQL-DMO. MS SQL Server стоит дорого, а MSDE бесплатный. В некоторых малых и средних приложениях MSDE достаточно. Однако, поскольку MSDE предоставляет только двигатель базы данных, но не предоставляет интерфейс управления визуальным управлением, невозможно регулярно управлять базами данных в MSDE, что ограничивает объем применения MSDE. В настоящее время, если мы используем SQL-DMO, мы можем предоставить наш собственный интерфейс управления базами данных, чтобы мы могли выполнять определенное регулярное управление базой данных в MSDE. Если время и стоимость не рассматриваются, вы можете создать интерфейс управления, аналогичный интерфейсу Enterprise Manager. Фактически, большинство функций Enterprise Manager также реализованы с помощью SQL-DMO. (Используется SQL-NS (SQL-Namespace, который также является коллекцией объектов COM, обеспечивая доступ к пространству имени объекта в SQL Server), но сам SQL-NS также построен на SQL-DMO)
Хост SQL-DMO и композиция
Хост SQL-DMO-SQLDMO.DLL, расположенный в соответствии с файлами x:/Program/Microsoft SQL Server/80/Tools/Binn. Кроме того, он также требует следующих файлов: L
SQLDMO.DLL ( библиотека основного типа) L
SQLDMO.RLL ( Файл ресурса языка) L
SQLSVC.DLL ( Библиотека типа для управления базами данных) L
SQLSVC.RLL ( Файл языкового ресурса) L
SQLUNIRL .Dll (unicode перенаправленный слой) l
sqlrsld.dll ( для загрузки ресурсов) L
ODBC ( включая ODBC32.dll, SQLSRV32.dll, ODBCBCP.DLL и т. Д.) Вот объяснение структуры вызова (рис. 1)::
| Наше приложение создает объекты с использованием SQL-DMO здесь |
Рисунок 1 Структура вызова SQL-DMO
SQL-DMO Объектное дерево
Давайте сначала посмотрим на огромное и сложное дерево объектов SQL-DMO (см. Рисунок 3): Объект SQLServer является основой этого дерева объектов, и в рамках этой основы: L Database есть три основные ветви: L и серия реализаций объектов Под этим базы данных архитектуры и технического обслуживания в SQLServer. L Jobserver Branch, серия объектов под ним реализует службу агента SQL Server (агент). L РЕБОРНЫЕ ПЕРЕПЛАТЫ, ряд объектов под ним реализует службу репликации SQL Server. Есть также вещи, которые следует отметить: L В дереве объектов не перечисляется объект приложения, но на самом деле это относительно важный объект. У любого объекта SQL-DMO есть свойство, указывающее на объект приложения. Объект приложения представляет глобальное приложение, которое содержит два объекта сбора: серверы и серверные группы. Как показано на рисунке 2: Рисунок 2 Объект приложения L Дерево объектов представляет только структуру SQL-DMO и не перечисляет все объекты, такие как объект именований, объект серверной группы и т. Д. Дерево объекта SQL-DMO имеет сложную структуру и многие объекты. Рисунок 3 Дерево объекта SQL-DMO
Реализация инкапсулированного Delphi SQL-DMO
Ниже приведено описание компонента TDBCTRL для инкапсуляции SQL-DMO, реализованной автором с использованием Delphi. Поскольку мне нужен был бесплатный двигатель базы данных в определенном проекте, я наконец -то выбрал MSDE, но MSDE не имеет интерфейса управления, это просто двигатель. Следовательно, необходимо предоставить простой и четкий интерфейс управления для MSDE. Нам не нужно предоставлять столько функций управления, сколько и Enterprise Manager, нам просто нужно предоставить наиболее часто используемые функции. Учитывая простоту использования и масштабируемость, решительно предоставить его в форме компонентов. Реализированные компоненты обеспечивают слой упаковки для SQL-DMO, инкапсулируя некоторые часто используемые функции и упрощая использование. Обратите внимание, что компиляция этого компонента требует введения библиотеки типа SQL-DMO и генерации соответствующего кода описания. Код содержит много регулярного использования Delphi и идиоматической нотации объектов COM. Я не буду обсуждать, как Delphi использует Com здесь, читатели могут ссылаться на связанные книги. Этот компонент содержит следующие свойства: Host: String Read Fhost Write Fhost; // Имя хоста, то есть имя экземпляра SQL Server для подключения Свойства: Строка Рид FPWD WIRP FPWD; ogin: string read flogin write flogin; Частный член данных: SQLServer для сохранения. Его тип _sqlservr. Конструктор должен подключиться к созданию объекта SQLServer. Деструктор также просто для завершения разрушения объекта SQLServer. конструктор Tdbctrl.create (Aowner: Tomponent); После этого Delphi завершит разрушение COM -объектов за кулисами. Унаследован; конец; если мы хотим управлять и управлять определенным экземпляром SQL Server, мы должны сначала подключиться к этому экземпляру. Следующая функция ConnectToServer реализует функцию того, как подключиться к экземпляру SQL Server. Функция tdbctrl.connecttoserver: boolean; РЕЗУЛЬТАТ: = Верно; в зависимости от регистрации в разрешении пользователя). Некоторые из методов, перечисленных ниже, показывают некоторые функции. Метод GetTableList получает все имена таблиц базы данных и возвращает их в TStringList. Функция tdbctrl.gettablelist (dbname: string; .Databases.item (dbname, sqlserver); // Получить объект базы данных на основе имени базы данных для i: = 1 до nowdb.tables.count do nowtable: = nowdb.tables.item (i, 0); D (Nowtable .name); Все представления в базе данных (представления), все поля таблицы или представления (столбцы), все группы файлов данных базы данных и файлы данных (FileGroups, DBFILE) и т. Д. Они могут быть специально упомянуты в дереве структуры объектов в SQL-DMO. Использование объектов SQL-DMO может выполнять следующие основные шаги: Получить объект или объект сбора через объект верхнего уровня, а затем использовать объект или получить объект в объекте сбора перед использованием. Вообще говоря, если это объект сбора, существует метод элемента, и объект члена коллекции может быть возвращен на основе индекса или имени. Следует отметить, что индекс начинается с 1 вместо 0. Вышеуказанные методы продемонстрировали, как получить информацию из базы данных. Этот метод показывает, как поддерживать базу данных. Функция tdbctrl.backupdb (dbname, backupfile: string): boolean; // Периодические параметры - это имя базы данных, и имя резервного файла var dmoback: _backup; Объект устройства // Установите резервное копирование DeleteFile (BackupFile); = Dbname+'bak'; Здесь не будет возвращено значения, просто не может быть, что исключение добавлено, потому что конец резервного копирования уже существует; = DBNAME+'BAK'; nil; e nd; end; Кроме того, я хочу дать пример, объясните, как использовать объект приложения, упомянутый в начале. Этот метод состоит в том, чтобы получить имена всех доступных (то есть достижимых и подключаемых) экземпляров SQL Server. Функция tdbctrl.getServerlist (VAR Serverlist: TSTRINGLIST): BOOLEAN; VAR APP: _Application; ; Конец объекта; конечно; Полем Читатели могут обратиться к примеру кода и онлайн -книги SQL Server, чтобы узнать из одного примера и реализовать нужные функции. Если вам нужен весь код для этого компонента, вы можете попросить меня об этом.
Другие инструкции
Версия 2000 SQL-DMO полностью совместима с SQL Server7.0 и SQL Server 2000. Тем не менее, более 80 новых интерфейсов предоставляются для поддержки новых функций SQL Server 2000. Все эти новые интерфейсы заканчиваются «2», которые являются суперсенами этих интерфейсов в исходном SQL Server 7.0. То есть, если вы хотите использовать новые функции SQL Server 2000, вам необходимо использовать интерфейс с «2» в конце.
библиография
L Microsoft MSDNL Microsoft SQL Server Online Bookl "Delphi Com подробное программирование" (США) Eric Harmon Machinery Industry