Используя SMO для копирования базы данных и данных

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

22
задан Irshad 28 September 2015 в 06:42
поделиться

2 ответа

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

рабочий код следующие:

ServerConnection conn = new ServerConnection("rune\\sql2008");
Server server = new Server(conn);

Database newdb = new Database(server, "new database");
newdb.Create();

Transfer transfer = new Transfer(server.Databases["source database"]);
transfer.CopyAllObjects = true;
transfer.CopyAllUsers = true;
transfer.Options.WithDependencies = true;
transfer.DestinationDatabase = newdb.Name;
transfer.DestinationServer = server.Name;
transfer.DestinationLoginSecure = true;
transfer.CopySchema = true;
transfer.CopyData = true;
transfer.Options.ContinueScriptingOnError = true;
transfer.TransferData();

прием должен был установить свойство DestinationDatabase. Это должно быть установлено, даже если цель - тот же самый как источник. Кроме того, я должен был соединиться с сервером как именованный экземпляр вместо того, чтобы использовать другие опции соединения.

17
ответ дан Rune Grimstad 29 November 2019 в 05:36
поделиться

Попробуйте установить для SetDefaultInitFields значение true на объекте Server .

У меня была та же проблема с медленно работающим объектом базы данных SMO. Я предполагаю, что это потому, что SQL Server не любит извлекать целые объекты и коллекции сразу, вместо этого ленивая загрузка всего, вызывая круговое обращение для каждого поля, что для всей базы данных довольно неэффективно.

2
ответ дан Rob 29 November 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: