|
Программирование >> Программирование баз данных
InitializeComponent(); private void btnBackupDB Click(object sender, EventArgs e) Создание объекта сервера и подключение к нему ServerConnection cn = new ServerConnection(); СП.LoginSecure = true; Se2rver svr = new Se2rver(cn); svr.ConnectionContext.Connect(); Создание и определение объекта резервной копии Backup bkp = new Backup(); bkp.Action = BackupActionType.Database; bkp.Database = AdventureWorks ; bkp.Devices.AddDevice(@ с:XSMGSample.bak , DeviceType.File); Запуск процедуры резервного копирования. Применяемый метод имеет суффикс Async и обеспечивает асинхронное выполнение операции, но можно было бы с таким же успехом воспользоваться синхронным режимом с применением метода SqlBackup bkp.SqlBackupAsync(svr); СП.Disconnect(); private void btnCreateDB Click(object sender, EventArgs e) Создание объекта сервера и подключение к нему ServerConnection cn = new ServerConnectionО; СП.LoginSecure = true; Se2rver svr = new Server (cn); svr.ConnectionContext.Connect(); Database db = new Database(); db.Parent = svr; db.Name = SMODatabase ; db.Create(); txtResult.Text = Database Created ; cn.Disconnect(); private void btnDropDB Click(object sender, EventArgs e) Создание объекта сервера и подключение к нему ServerConnection cn = new ServerConnectionО; СП.LoginSecure = true; Server svr = new Server(cn); svr.ConnectionContext.Connect(); Database db = svr.Databases[ SMODatabase ]; db.Drop(); txtResult.Text = Database Dropped ; СП.Disconnect{); private void btnCreateTables Click(object sender, EventArgs e) Создание объекта сервера и подключение к нему ServerConnection cn = new ServerConnection(); cn.LoginSecure = true; Server svr = new Server(cn); svr.ConnectionContext.Connect(); Получение ссылки на используемую при проверке базу данных SMO Database db = svr.Databases[ SMODatabase ]; Создание объекта таблицы Table ParentTable = new Table(db, ParentTable ); Определение структуры таблицы Column ParentKey = new Column(ParentTable, ParentKey ); ParentKey.DataType = DataType.Int; ParentKey.Nullable = false; ParentKey.Identity = true; Column ParentDescription = new Column (ParentTable, ParentDescription ) ; ParentDescription.DataType = DataType .NVarCliarMax; ParentDescription.Nullable = false; Добавление других необходимых объектов к определению таблицы ParentTable.Columns.Add(ParentKey); ParentTable.Columns.Add(ParentDescription); Создание первичного ключа Index PKParentKey = new Index(ParentTable, PKParentKey ); PKParentKey.IndexKeyType = IndexKeyType.DriPrimaryKey; PKParentKey. IndexedColumns. Add (new IndexedColumn (PKParentKey, ParentKey )) ; ParentTable.Indexes.Add(PKParentKey); ParentTable.Create() ; Создание объекта дочерней таблицы Table ChildTable = new Table(db, ChildTable ); Определение структуры дочерней таблицы Column ChildParentKey = new Column(ChildTable, ParentKey ); ChildParentKey.DataType = DataType.Int; ChildParentKey.Nullable = false; Column ChildKey = new Column(ChildTable, ChildKey ); ChildKey.DataType = DataType.Int; ChildKey.Nullable = false; Column ChildDescription = new Column(ChildTable, ChildDescription ), ChiIdDescription.DataType = DataType.NVarCharMax; ChildDescription.Nullable = false; Добавление других необходимых объектов к определению таблицы ChildTable.Columns.Add(ChildParentKey); ChildTable.Columns.Add(ChildKey); ChildTable.Columns.Add(ChildDescription); Создание составного первичного ключа Index PKChildKey = new Index(ChildTable, PKChildKey ); PKChildKey.IndexKeyType = IndexKeyType.DriPrimaryKey; PKChildKey. IndexedColumns. Add (new IndexedColumn (PKChildKey, ParentKey )); PKChildKey. IndexedColumns. Add (new IndexedColumn (PKChildKey, ChildKey )) ; ChildTable.Indexes.Add(PKChildKey); Создание внешнего ключа ForeignKey FKParent = new ForeignKey(ChildTable, FKParent ); В приведенном ниже определении первое значение ParentKey представляет собой имя текущей таблицы. А второе значение соответствует имени таблицы, упомянутой в ссьшке (или только столбцу) ForeignKeyColumn FKParentParentKey = new ForeignKeyColumn(FKParent, ParentKey , ParentKey ); FKParent.Columns.Add(FKParentParentKey); FKParent.ReferencedTable = ParentTable ; Можно было бы также задать конкретную схему, но таблица создана с применением лишь схемы, заданной по умолчанию, поэтому и данная таблица ссылается на эту схему. Таблица может быть создана с применением той схемы, которая по умолчанию задана для текущего пользователя /* Следует отметить, что в этом коде можно было бы также определить ** некоторые другие свойства, наподобие действий CASCADE, но в целях ** упрощения примера этого решено не делать */ ChildTable.ForeignKeys.Add(FKParent); ChildTable.Create(); cn.Disconnect 0; txtResult.Text = Tables Created ; private void btnScript Click(object sender, EventArgs e) Создание объекта сервера и подключение к нему ServerConnection cn = new ServerConnectionО; СП.LoginSecure = true; Server svr = new Server(cn); svr.ConnectionContext.Connect(); Определение базы данных, в которой будет находиться таблица, ссылающаяся на рассматриваемую таблицу Database db = svr.Databases[ AdventureWorks ]; Получение ссылки на таблицу. Следует отметить, что схема фактически определяется вторым параметром, а не первым Table Employee = db.Tables[ Employee , HumanResources ]; Вызов метода Script. Проблема состоит в том, что он возвращает
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |