SQL Server SMO TransferData () работает медленно - PullRequest
0 голосов
/ 24 мая 2011

Я следую http://www.mssqltips.com/tip.asp?tip=1910, и следующий код на самом деле работает, но для его выполнения требуется около 90 секунд. Схема базы данных имеет менее 10 (довольно простых) таблиц. Я не уверен, почему это так долго. Любые предложения о том, как отладить это?

var host = "192.168...";
var user = "username";
var pass = "password";
var srcDbName = "srcDbName";
var dstDbName = "dstDbName";

var server = new Server(new ServerConnection(host, user, pass));

var srcDb = server.Databases[srcDbName];
var dstDb = new Database(server, dstDbName);

dstDb.Create();

var transfer = new Transfer(srcDb);

transfer.CopyAllTables = true;
transfer.Options.DriAll = true;
transfer.Options.ContinueScriptingOnError = false;

transfer.DestinationDatabase = dstDbName;
transfer.DestinationServer = server.Name;
transfer.DestinationLoginSecure = false;
transfer.DestinationLogin = user;
transfer.DestinationPassword = pass;

transfer.TransferData();

1 Ответ

0 голосов
/ 23 сентября 2011

Я думаю, что вы должны оставить этот код в покое. Вы не можете улучшить это. Как я понял из вопроса, вы хотите перенести таблицы / схемы из одной базы данных в другую.

Ниже предложены варианты:

Связанные серверы

Начиная с SQL 2000, вы должны иметь возможность подключаться напрямую к другой базе данных в качестве связанного сервера. В колонке «за» может быть легко работать с этим прямым доступом, если у вас нет каких-либо других технических навыков, таких как DTS или SSIS, но это может быть сложным для правильной начальной настройки и могут возникнуть проблемы с безопасностью /issues.

DTS

DTS упакован с SQL 2000 и предназначен для такого рода задач. Если написано правильно, ваш пакет DTS может хорошо обрабатывать ошибки и может быть перезапущен / повторно использован.

SSIS

Службы SSIS фактически упакованы с SQL 2005 и выше, но вы можете подключить его к другим базам данных. Это в основном лучшая версия DTS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...