2010-11-04 3 views
0

Hé les gars, je fais la majeure partie de mon travail sur MySQL, mais j'ai récemment été chargé de travailler sur SQL Server. Je réalise que les bases de données fonctionnent de manière très similaire.Exportation quotidienne de données SQL Server (longueur fixe) vers un serveur SFTP

Ma tâche est simple, exporter les données d'une base de données SQL Server 2008 sous la forme d'un fichier de longueur fixe vers un serveur ftp sécurisé sur une base quotidienne. Si j'utilisais PHP, j'écrirais probablement un script php qui le fait avec un travail cron. Mais dans ce cas, je n'ai pas accès à tout ça. D'après ce que j'ai lu, il me semble que je peux utiliser SQL Server 2008 lui-même pour faire cela pour moi.

Quelqu'un peut-il donner des pointeurs et laissez-moi savoir si c'est une tâche facile. Je ne veux pas prendre un travail qui est au-delà de mes compétences;)

Répondre

2

Chaque installation de SQL Server (y compris les éditions Express) est fournie avec un petit outil appelé bcp.exe (utilitaire de copie en bloc). Il supporte deux formats, natif et caractère. Vous êtes probablement intéressé par le format de caractères, voir Using Character Format to Import or Export Data. Ajout d'un champ de terminaison virgule , produira un fichier CSV:

bcp database.dbo.table out datafile.csv -c -t, -T 

Si vous voulez une sortie de longueur fixe, puis probablement la meilleure solution consiste à spécifier un fichier de format. Voir Specifying Data Formats for Compatibility by Using bcp.

Une fois que vous avez le fichier, vous pouvez le copier sur votre serveur SFTP. L'équivalent de cron sur les plateformes Windows est le Scheduler, voir The Task Scheduler.

Il existe des solutions plus sophistiquées, comme l'utilisation de SSIS comme suggéré Eugene, qui vous donnerait plus de puissance et de contrôle. SSIS est livré avec SQL Server (mais pas avec Express Edition) et sur les éditions non-Express, vous avez le SQL Server Agent pour vous aider à planifier les tâches.

+0

donc je voudrais utiliser le planificateur de tâches et créer une tâche pour exécuter bpc.exe (avec quelques commandes) pour générer le fichier, puis créer une autre tâche dans le planificateur pour prendre ce fichier et le coller sur un sftp distant. c'est aussi simple que ça? – Roeland

+0

Je voudrais emballer la totalité des tâches dans un fichier .cmd et planifier cela comme une tâche. –

1

Si vous pouvez utiliser SQL Server Integration Services, jetez un oeil à SFTP task dans notre produit BizCrypto. Avec les services d'intégration, vous pouvez créer un fichier et le transférer vers le serveur SFTP distant.

+0

Cela semble être un produit de 1000 $. Je ne pense pas que j'ai un budget prévu pour cela. Vous dites que les transferts SFTP ne peuvent pas être effectués via SQL Server lui-même? – Roeland

+0

@Roeland: SSIS fait partie de SQL Server lui-même et de toutes les éditions sauf Express. Utilisez-vous SQL Server Express Edition pour votre tâche? –

+0

@Roeland Comme Remus l'a mentionné dans sa réponse ci-dessous, vous pouvez exécuter un client SFTP externe dans les délais. Il existe également d'autres tâches SSIS pour SFTP, mais je ne me souviens pas de tâches gratuites. –

Questions connexes