182 votes

Comment trouver un texte à l’intérieur de procédures SQL Server / déclenche ?

J’ai un linkedserver qui va changer. Certaines opérations d’appellent le serveur lié comme ceci : . Nous avons des déclencheurs aussi faire ce genre de travail. Nous devons trouver tous les lieux qui utilise pour le changer.

Dans SQL Server Management Studio Express, je n’ai trouvé une fonction comme « trouver dans toute base de données » dans Visual Studio. Un spécial sys-select peut m’aider à trouver ce dont j’ai besoin ?

327voto

KM. Points 51800

Voici une partie d’une procédure que j’utilise sur mon système pour rechercher du texte...

22voto

ashish.chotalia Points 2105

Vous pouvez trouver ça

Il donnera la liste des noms de procédure stockée distincte qui contiennent du texte comme « Utilisateur » à l’intérieur de la procédure stockée. Plus d’informations

17voto

Dwoolk Points 538

[Réponse tardive mais j'espère utile]

À l'aide de tables système ne donne pas toujours 100% de résultats corrects, car il pourrait y avoir une possibilité que certaines procédures stockées et/ou de points de vue sont chiffrés dans ce cas, vous aurez besoin d'utiliser le DAC de connexion pour obtenir les données dont vous avez besoin.

Je vous recommande d'utiliser un outil tiers comme ApexSQL de Recherche qui peut traiter avec les objets chiffrés facilement.

Syscomments système de de table donnera la valeur null pour les colonnes de texte dans le cas où l'objet est crypté.

12voto

Heba Mahmoud Points 51
-- Declare the text we want to search for
DECLARE @Text nvarchar(4000);
SET @Text = 'employee';

-- Get the schema name, table name, and table type for:

-- Table names
SELECT
       TABLE_SCHEMA  AS 'Object Schema'
      ,TABLE_NAME    AS 'Object Name'
      ,TABLE_TYPE    AS 'Object Type'
      ,'Table Name'  AS 'TEXT Location'
FROM  INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%'+@Text+'%'
UNION
 --Column names
SELECT
      TABLE_SCHEMA   AS 'Object Schema'
      ,COLUMN_NAME   AS 'Object Name'
      ,'COLUMN'      AS 'Object Type'
      ,'Column Name' AS 'TEXT Location'
FROM  INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%'+@Text+'%'
UNION
-- Function or procedure bodies
SELECT
      SPECIFIC_SCHEMA     AS 'Object Schema'
      ,ROUTINE_NAME       AS 'Object Name'
      ,ROUTINE_TYPE       AS 'Object Type'
      ,ROUTINE_DEFINITION AS 'TEXT Location'
FROM  INFORMATION_SCHEMA.ROUTINES 
WHERE ROUTINE_DEFINITION LIKE '%'+@Text+'%'
      AND (ROUTINE_TYPE = 'function' OR ROUTINE_TYPE = 'procedure');

5voto

laurens Points 107

Cela fonctionnera pour vous :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X