2008-10-06 5 views
3

Je dois copier plusieurs tables d'une base de données vers une autre dans SQL Server 2000, en utilisant C# (VS 2005). L'appel doit être paramétré - je dois pouvoir passer le nom de la base de données sur laquelle je vais copier ces tables.Comment copier une base de données MS SQL 2000 par programmation en utilisant C#?

Je pourrais utiliser DTS avec des paramètres, mais je ne trouve aucun exemple de code qui le fasse à partir de C#.

Sinon, je pouvais utiliser

drop table TableName 
select * into TableName from SourceDB..TableName 

puis reconstruire les index etc - mais c'est vraiment kludgy.

D'autres idées?

Merci!

+0

Lorsque vous indiquez que vous ne pouvez pas trouver un exemple de code C# pour DTS, voulez-vous dire un exemple de code pour exécuter un package DTS ou un exemple de code pour copier des tables dans un package DTS? – kristian

Répondre

3

Pour SQL Server 7.0 et 2000, nous avons SQLDMO pour cela. Pour SQL Server 2005, il y a SMO. Cela vous permet de faire pratiquement tout ce qui concerne l'administration de la base de données, le scriptage des objets, l'énumération des bases de données, et bien plus encore. C'est mieux, IMO, que d'essayer une approche «rouler le vôtre».

SQL 2000: Developing SQL-DMO Applications

Transfer Object

SQL 2005: Voici la page principale SMO: Microsoft SQL Server Management Objects (SMO)

Voici la fonctionnalité de transfert: Transferring Data

How to: Transfer Schema and Data from One Database to Another in Visual Basic .NET

1

Si la table de destination est supprimée à chaque fois, alors pourquoi ne pas sélectionner SELECT INTO? Ça ne semble pas du tout un truc.

Si cela fonctionne très bien et coche toutes les cases d'exigences pourquoi créer un jour de travail code de croissance pour faire exactement la même chose? Laissez le SQL faire tout le travail lourd pour vous.

+0

Cela peut devenir compliqué avec les dépendances FK et ce genre de choses. Je ne dis pas que ça ne marcherait pas, ça me semble très inélégant. –

1

Vous pouvez mettre les scripts (copier db) trouvés ici

http://www.codeproject.com/KB/database/CreateDatabaseScript.aspx

dans une application. Remplacez simplement la destination. Pour déplacer réellement la base de données entite, SUIVEZ

http://support.microsoft.com/kb/314546

Mais rappelez-vous, la base de données doit être mis hors ligne en premier.

Merci

+0

Serait bien, mais le script CodeProject est pour SQL 2005; Je n'ai que SQL 2000. –

+0

Regardez la documentation en ligne pour SQL Server 2000, tapez "Copy Database" et vous obtiendrez des informations là-bas. –

Questions connexes