SQL Server : Requêter à travers un firewall

Tout est décrit sur cette page : Lien vers MSDN
Ils précisent que ça se fait en 2 étapes :

  • Préciser à SQL Server d’utiliser le port 1433
  • Ouvrir le port sur le firewall.

Sinon :

As an alternative to configuring SQL Server to listen on a fixed port and opening the port, you can list the SQL Server executable (Sqlservr.exe) as an exception to the blocked programs.

SQL SERVER : Désactiver les contraintes sur une table.

La commande est celle-ci :
ALTER TABLE ma_table NOCHECK CONSTRAINT ALL
Pour désactiver TOUTES les contraintes de TOUTES les tables :
exec sp_MSforeachtable ’ALTER TABLE ? NOCHECK CONSTRAINT ALL’
Pour tout remettre d’équerre :
exec sp_MSforeachtable ’ALTER TABLE ? CHECK CONSTRAINT ALL’
A noter que ça marche aussi pour désactiver les triggers : ALTER TABLE ma_table DISABLE TRIGGER ALL, puis faire ENABLE pour les réactiver.
Source sur SQLServer Magazine.

SQL Server : Fichier de Log (.LDF) qui devient énorme.

Comment diminuer de taille le fichier de transactions en un seul script SQL ?
Lorsqu’une base de données est en mode de récupération « Full » (Complète), les fichiers journaux .LDF peuvent devenir énormes (toutes les transactions sont enregistrées).
En lancant le script SQL ci-dessous, vous allez sauvegarder vos bases et fichiers de transaction, et diminuer la taille du fichier LDF :

-- Sauvegarde complète
BACKUP DATABASE MaBase TO DISK = ’S:mssqlMaBase.bak’
GO
BACKUP LOG MaBase TO DISK = ’S:mssqlMaBase_log.bak’
GO
USE MaBase
GO
-- (MaBase_log est le nom LOGIQUE du fichier LDF physique... A vérifier donc !)
DBCC SHRINKFILE(MaBase_log)
GO

NB : le fait de faire une sauvegarde complète d’une BDD vide le fichier de log « LDF »… mais ne diminue pas sa taille ! C’est pourquoi il faut faire un SHRINKFILE.
NB2 : C’est pourquoi il est important de faire une sauvegarde complète une fois par jour, afin d’empêcher le fichier LDF de grossir démesurément (le fichier se « videra » puis l’espace sera réutilisé…)
NB3 : Il faut également réfléchir à passer en mode de récupération SIMPLE. Le fichier LDF ne grossira pas autant, mais la perte de données admissible en cas de crash sera plus grande.
 

T-SQL : Boucler sur un curseur

Etant donné que j’oublie à chaque fois cette structure de code, je la placeune fois pour toute :

DECLARE @ma_var1 VARCHAR(255), @ma_var2 VARCHAR(255)
DECLARE mon_curseur CURSOR FOR
   SELECT col1, col2 FROM ma_table
OPEN mon_curseur
FETCH NEXT FROM mon_curseur INTO @ma_var1, @ma_var2
WHILE @@FETCH_STATUS = 0
BEGIN
   FETCH NEXT FROM mon_curseur INTO @ma_var1, @ma_var2
END
CLOSE mon_curseur
DEALLOCATE mon_curseur