Interfaces graphiques.
Importer.
Dans SSMS, l'option d'importation de fichier Excel ou Access dans MSSQL est disponible par un clic droit sur la base de destination, "Tâches...", "Importer des données...".
Exporter.
De même, il existe "Tâches...", "Exporter des données..." ou "Copier la base de données".
Il est par ailleurs possible d'exporter le résultat d'une requête. En effet, par défaut dans SSMS, le bouton "Résultats dans des grilles" est enfoncé. En cliquant sur "Résultats dans un fichier", il devient possible d'exporter le contenu de tables dans un fichier .rpt avec une requête SQL.
Pour transformer une base MS-SQL en il existe . Attention car la syntaxe des est différente.
xp_cmdShell.
codice_1 permet de d’interagir avec le système de fichier, en manipulant le shell du système d'exploitation : il comprend donc les commandes DOS.
Créer un fichier texte.
EXECUTE master.dbo.xp_cmdShell 'echo Hello World! > C:\Test.txt'
-- ou en abrégeant :
xp_cmdShell 'echo Hello World! > C:\Test.txt'
Pour le lire, il suffit de le charger dans une table avec codice_2.
Copier un fichier.
xp_cmdshell 'copy C:\Test.txt C:\Test2.txt'
Cacher un fichier.
xp_cmdshell 'attrib +h C:\Test.txt'
Supprimer un fichier.
xp_cmdshell 'del C:\Test2.txt' 
Créer un dossier.
L'antislash de fin est facultatif :
xp_cmdShell 'mkdir C:\Test\'
Lister le contenu d'un dossier.
xp_cmdShell 'dir C:\Test\'
Supprimer un dossier.
xp_cmdShell 'rmdir C:\Test\'
OPENROWSET.
Pour archiver vers d'autres formats que ceux de la base de données, il existe la fonction "OPENROWSET". Elle permet d'importer ou d'exporter des données aux formats MS-Access ou MS-Excel. 
Si ce pilote XLS demande une activation, il faut configurer :
sp_configure 'Show Advanced Options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries'; -- affiche l'état avant configuration
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries'; -- affiche l'état après configuration
GO
Soient les fichiers C:\Test_OPENROWSET.csv, C:\Test_OPENROWSET.xls et C:\Test_OPENROWSET.xlsx existants, avec une feuille nommée "Feuil1", dont les en-têtes de colonnes sont "Nom" et "Prénom".
Insertions dans un tableur.
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\Test_OPENROWSET.xls;', 'SELECT * FROM [Feuil1$]')
SELECT Nom, Prénom
FROM table1
Sélections dans un tableur.
CSV.
On définit le dossier puis le fichier. Il y a deux pilotes au choix :
SELECT * FROM OPENROWSET('MSDASQL','Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=C:\;','select * from Test_OPENROWSET.csv');
ou
SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Text;Database=C:\;','SELECT * FROM [Test_OPENROWSET.csv]')
XLS.
Pour lire un XLS ou ou l'importer dans une table, on définit le fichier puis la feuille :
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\Test_OPENROWSET.xls;', 'SELECT * FROM [Feuil1$]')
Plusieurs options peuvent aussi être placées après le nom du fichier. Elles n'impactent pas le mode écriture, seulement le mode lecture.
On peut aussi créer un serveur lié pour l'occasion :
EXEC sp_addlinkedserver
 @server = 'ExcelServer1',
 @srvproduct = 'Excel',
 @provider = 'Microsoft.Jet.OLEDB.4.0',
 @datasrc = 'C:\Test_OPENROWSET.xls',
 @provstr = 'Excel 8.0;IMEX=1;HDR=YES;'
GO
SELECT * FROM ExcelServer1...[Sheet1$]
GO
SELECT * FROM OPENROWSET(ExcelServer1, 'SELECT * FROM [Sheet1$]')
XLSX.
Pour un XLSX c'est un autre pilote :
select * from OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml;Database=C:\Test_OPENROWSET.xlsx;', 'SELECT * FROM [Feuil1$]')
S'il faut enregistrer le pilote, l'installer depuis : https://www.microsoft.com/fr-FR/download/details.aspx?id=23734.
Modification d'un tableur.
La fonction codice_3 de SQL Server 2008 ne permet pas de modifier les propriétés des cellules d'un tableur, pour se faire se reporter au paragraphe sur codice_4. Dans tous les cas, il peut tout à fait mettre à jour ses valeurs comme si elles étaient dans des tables :
UPDATE OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:\Test_OPENROWSET.xls;HDR=yes','SELECT * FROM [Feuil1$]') 
SET F1 = '2'
WHERE F1 = '1'
BCP.
"bcp" (pour "Bulk Copy") est un utilitaire d'importation et exportation de données avec des fichiers plats uniquement (XML ou CSV).
DECLARE @cmd VARCHAR(255)
SET @cmd = 'bcp "select "Hello", "World"" queryout "C:\Test_bcp.csv" -U MonCompte -P MonMotDePasse -c'
Exec xp_cmdshell @cmd
sp_OACreate.
codice_5 est une procédure stockée étendue permettant de manipuler des fichiers et des dossiers. Elle n'est pas activée par défaut sous SQL Server 2008, il faut donc le faire ainsi :
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures'; -- affiche l'état avant configuration
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures'; -- affiche l'état après configuration
Voici un exemple de création puis de modification de fichier XLS (les numéros des couleurs sont les mêmes qu'en VBA) :
DECLARE @r int, -- résultats des commandes
 @FileName varchar(512),
 @Excel int,
 @WorkBooks int,
 @WorkBook int,
 @WorkSheet int,
 @Cells int
-- 1) Création
SET @FileName = 'C:\Test_sp_OACreate.xls'
EXEC @r = sp_OACreate 'Excel.Application', @Excel output
IF @r=0 EXEC @r = sp_OAMethod @Excel, 'Workbooks', @WorkBooks OUTPUT
IF @r=0 EXEC @r = sp_OAMethod @WorkBooks, 'Add', @WorkBook OUTPUT, -4167
IF @r=0 EXEC @r = sp_OAMethod @WorkBook, 'Worksheets(1)', @WorkSheet output, 2
IF @r=0 EXEC @r = sp_OAMethod @WorkSheet, 'Activate'
IF @r=0 EXEC @r = sp_OASetProperty @WorkSheet, 'Name', 'Reporting'
IF @r=0 EXEC @r = sp_OASetProperty @WorkSheet, 'Cells(1,3).Value', 'Hello World!'
IF @r=0 EXEC @r = sp_OAMethod @WorkBook, 'SaveAs', NULL, @FileName
IF @r=0 EXEC @r = sp_OAMethod @WorkBook, 'Close'
-- 2) Une fois le fichier fermé on peut le remplir ici avec OPENROWSET
-- 3) Retouches
IF @r=0 EXEC @r = sp_OAMethod @Excel, 'WorkBooks.Open', @WorkBook output, @FileName
IF @r=0 EXEC @r = sp_OAMethod @WorkBook, 'Worksheets(1)', @WorkSheet output, 2
IF @r=0 EXEC @r = sp_OAMethod @WorkSheet, 'Activate'
EXEC @r = sp_OASetProperty @WorkSheet, 'Range("A1").Value', 'Hello World1!'
EXEC @r = sp_OAGetProperty @WorkSheet, 'Cells', @Cells OUTPUT, 2, 2 -- Position de la cellule B2
EXEC @r = sp_OASetProperty @Cells, 'Value', 'Hello World2!'
EXEC @r = sp_OASetProperty @Cells, 'Font.Bold', 1 -- gras
EXEC @r = sp_OASetProperty @Cells, 'Font.Colorindex', 3 -- rouge pour la police
EXEC @r = sp_OASetProperty @Cells, 'Interior.ColorIndex', 4 -- vert pour le fond
EXEC @r = sp_OASetProperty @Cells, 'Borders.ColorIndex', 5 -- bleu pour les bordures
EXEC @r = sp_OASetProperty @Excel, 'ActiveWorkbook.Worksheets(1).Cells(3,3).Value', 'Hello World3!'
EXEC @r = sp_OASetProperty @Excel, 'ActiveWorkbook.Worksheets(1).Cells(3,3).Font.Colorindex', 9
EXEC sp_OAMethod @Excel, 'ActiveWorkbook.Save'
EXEC sp_OAMethod @Excel, 'Workbooks.Close'
EXEC sp_OAMethod @Excel, 'Close'
EXEC sp_OADestroy @Cells
EXEC sp_OADestroy @WorkSheet
EXEC sp_OADestroy @WorkBook
EXEC sp_OADestroy @WorkBooks
EXEC sp_OADestroy @Excel
Sauvegardes .bak et .trn.
Tout d'abord, il faut distinguer l'archivage des bases (copie d'un .mdf en .bak) de celui des logs (.ldf en .trn) appelés aussi "journaux de transaction".
Backup des bases.
Il est recommandé d'effectuer automatiquement celui un backup des bases toutes les nuits, à l'aide d'un job (dans SSMS, en bas de l'arborescence, menu "Travaux"). Un deuxième pourra s'occuper de supprimer les .bak après une certaine durée de rétention qui peut dépendre de l'espace disponible sur le serveur.
Exemple de sauvegarde sur un disque dur du serveur (et non pas un du client où SSMS est lancé) :
declare @chemin as varchar(255) = 'C:\' + CONVERT(char(10), GetDate(),126) + '-sugarcrm.bak'
BACKUP DATABASE sugarcrm
TO DISK = @chemin
 WITH FORMAT,
 MEDIANAME = ",
 NAME = 'Full Backup';
GO
Journaux.
Requêtes.
Par défaut, SSMS ne permet pas de consulter les requêtes SQL envoyées au serveur.
Toutefois, les dernières requêtes sont stockées dans un fichier des traces .trc. Pour connaitre son nom :
SELECT * FROM ::fn_trace_getinfo(default) 
Ensuite on peut en extraire les 10 dernières requêtes SQL envoyées au serveur :
SELECT top 10 StartTime, TextData
FROM fn_trace_gettable('D:\MSSQL10.MSSQLSERVER\MSSQL\Log\log_424.trc', default)
where ISNULL(convert(varchar,TextData,112), ")<>"
order by StartTime desc
Soit en une seule requête :
declare @logs varchar(255) = (SELECT top 1 convert(varchar(255),value,112) FROM ::fn_trace_getinfo(default) where property = 2)
SELECT top 10 StartTime, TextData
FROM fn_trace_gettable(@logs, default)
where ISNULL(convert(varchar,TextData,112), ")<>"
order by StartTime desc
Autre solution, passer par les statistiques de performance :
SELECT top 10 d.last_execution_time, e.text
FROM sys.dm_exec_query_stats d
 CROSS APPLY sys.dm_exec_sql_text(d.plan_handle) AS e
order by d.last_execution_time desc
Transactions.
Il existe une fonction pour lire les journaux des transactions non archivées :
SELECT * FROM fn_dblog(NULL, NULL)
Afin de gagner de la place, ces logs doivent par contre être supprimés régulièrement (c'est sans incidence sur l'utilisation du système). Il existe trois façons de les tronquer :
Pour le définir automatiquement, il faut créer un job : "Agent SQL server, Travaux", Clic droit : "Nouveau travail".
Restaurations.
Dans SSMS, pour restaurer une base de données, il faut faire un clic droit sur "Bases de données", puis :
Sinon en SQL ça donne :
RESTORE DATABASE MaBase
FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\Backup\2016-02-16-MaBase.bak'
WITH REPLACE