Articles taggés Transact SQL

image.png

Like Underscore

0

Petite astuce aujourd’hui, si vous utilisez des requêtes Like et que vous avez un underscore dans le terme recherché.

Mettre un undescore dans une recherche signifie :

“Toutes chaines comportant à cet endroit là, n’importe quel caractères”

Ce qui donne :

Notez que j’ai toutes les lignes contenant 79 “quelque chose” (79_3 mais aussi 790_2, 791_2 etc….)

Hors dans mon cas, je souhaite que mon “_” soit pris non pas comme un caractère spécial, mais comme un un “simple” caractère.

A ce moment là, remplacez le “_” par “[_]”

Et voilà je n’ai plus que 4 lignes !

Autre méthode : Utilisez le mot clé Plus >

wlEmoticon-smile.png

Un UPDATE locke t’il toute une table ?

0

J’entends souvent dire que la mise à jour d’une ligne rend la table entière indisponible.

Bon soyons bien clair sur ce point ! La réponse est … ça dépend

Allez, une petit démonstration de tout ça, sous la forme d’un exercice :

 

Problème

Soit le premier script suivant :

  1. Création d’une table
  2. Remplissage de la table avec quelques enregistrements
  3. Mise à jour d’une ligne dans une transaction non commit
1: USE [master]

2: GO

3: IF EXISTS (SELECT name FROM sys.databases WHERE name = N'Test')

4: DROP DATABASE [Test]

5: GO

6: CREATE DATABASE [Test]

7: Go

Plus >
wlEmoticon-smile.png

TVP, Merge, CTE

0

J’ai récemment été confronté à un problème d’architecture SQL et de performances d’opérations CRUD sur SQL SERVER 2008

Pour tout vous dire, il s’agit de mon petit projet WP7 Starcraft 2 (oui je sais, je suis un Geek joueur )

Il ne devrait pas tarder à pointer le bout de son nez sur le Market Place, mais en attendant, voici un post résumant une des problématiques SQL que j’ai rencontrée !

Voici globalement les données du problème :

  • Je récupère des données provenant d’une source externe
  • Je dois fusionner ces données avec les données existantes de ma base de données. Il faut :
    1. Insérer les
    Plus >

Output.inserted, scope_identity()

0

Lors des insertions en base de données, souvent la clé primaire d’une table est gérée par le moteur de base de données SQL SERVER.

Pour une clé primaire de type Identity(1,1) on voit souvent ce genre de script, qui récupère la clé générée :

INSERT INTO [ClientType] ([Libelle]) VALUES ('Mon Type de client')   Select SCOPE_IDENTITY() as ClientTypeId

Le résultat sans appel : Le nouveau identifiant généré après l’insertion.

Mais que se passe t’il si la clé primaire n’est pas une clé auto incrémentée mais plutôt une clé de type uniqueidentifier ?

Voici un exemple de la table qui nous Plus >

Sql Azure : Script aspnet_membership database

2

Pour le moment, l’utilitaire aspnet_regsql.exe ne fonctionne pas directement sur une base de données SQL AZURE.

Voici un script de création de la base de données Membership, épuré des incompatibilités de la plateforme SQL AZURE.

N’oubliez pas de créer la base de données auparavant depuis l’interface d’administration SQL AZURE.

Voici le script, compressé : http://www.dotmim.com/sitefiles/SqlAzureScriptAspnetDb.zip

[SQL SERVER] Sp_who2 et sp_WhoIsActive

0

 

Beaucoup de DBA connaissent la fameuse procédure stockée système “Sp_Who”. En allant plus loin, on peut même utiliser sp_Who2, certes non documentée mais tout aussi efficace pour trouver des locks potentiels.

Je viens de mettre la main sur un petit bijou, une procédure stockée bien charnue, écrite par Mr Adam Machanic, MVP Sql Server. Il s’agit d’une procédure stockée nommé sp_WhoIsActive, et permet de bien mieux appréhender les problèmes de locks et de process actifs au sein de votre serveur SQL Server.

Un petit exemple d’utilisation du système :

Supposons une procédure stockée qui, Plus >

Sql Server 2008 Service Pack 1, ServerProperty productlevel

0

Vous le savez suremment (ou non ) mais le service pack 1 de Sql Server 2008 est sorti il y a peu.

Il est même embarqué dans Windows Update en tant que mise à jour optionnelle.

Bref, Il se peut fortement que vous ayez installé le service pack sur votre machine (ou serveur) ou tu du moins que vous êtes en passe de le faire

Une fois installé, tout bon admin réseau (ou développeur) aime bien vérifier que le Service pack est effectivement bien installé.

Première réponse

Aller voir les propriétés du serveur SQL, Via le Sql Server Management Tool :

Avant le SP1 :

Aprés le SP1 :

On remarque Plus >

ReadCommited, ReadUncommited, NoLock

0

Je Viens de tomber (encore) sur un mauvais cas d’utilisation du NoLock.

Malheureusement, et comme dans 90% des cas, l’utilisation du NoLock est faite “à défaut” pour palier à un problème de blocage…

Ceci n’engage que moi, mais le NoLock, c’est le mal ! (enfin pas que moi dis donc )

Mais revenons tout d’abord aux bases :

NoLock correspond à l’alias de ReadUncommitted qui est un Niveau d’Isolation. Qu’est ce qu’un niveau d’isolation (ou “Verrou”) : C’est l’isolation d’une transaction en cours, pour éviter qu’une autre transaction ne lise des données non validées (Un – Commit)

Il existe Plus >

Donnez des droits de lecture sur des procedures stockees

0

Dans la série tutorial du jour, voici une question récente d'un client :

"Comment ne donner de droits qu'aux procédures stockées de ma base ?"

C'est parti :

1) D'abord créer un Login Sql Server (à ne pas confondre avec l'utilisateur base de données !)

On crée un login pour permettre une connexion au serveur. Ce qui permet "juste que de" se connecter, et rien d'autre

2) Une fois le login créé, on crée, sur la base de donneés (Demo chez moi)  l'utilisateur associé à :

  • ce login
  • cette base de données

Ce qui veut dire que lorsque monsieur X se connecte avec le login défini avant et qu'il Plus >

Max(), Dbcc CheckIdent(), Ident_Current()

1

Rien à voir avec la choucroute, mais je rentre d'une semaine de vacances, et ben, ça fait du bien !

Evidemment, le retour aux sources est assez douloureux, surtout lorsqu'on doit dépiler les quantités de mails de retard (en virant les 90% de spam et autre bétises) et l'ensemble des flux RSS qu'on a l'habitude de parcourir !

Et justement, ce matin je suis tombé sur ce post intéressant où Pinal Dave nous explique comment récupérer la valeur courant d'un incrément automatique.

Bon pour faire simple; et comme il dit, y'a deux solutions :

1) la pas élégante (mais qui marche) :

use Plus >
Haut de page