Accueil > Forum > > > > sp_databases et sp_datainfo inexistant dans procedure stockée système ?
sp_databases et sp_datainfo inexistant dans procedure stockée système ?
vendredi 12 septembre 2008 à 10:59:34 |
sp_databases et sp_datainfo inexistant dans procedure stockée système ?

surfman
|
Bonjour à tous, J'ai un soucis, la procédure stockée système sp_databases n'existe plus, ainsi qu'une situé dessous ou dessus qui est sp_datainfo je ne sais plus exactement le nom (si quelqu'un pouvait me redonner ce nom ainsi que le code de cette procédure...). mon soucis est le suivant j'ai recrée sp_databases seulement en tant que procédure stockée et je voudrais le mettre en tant que procédure stockée système, comment faire ? Merci de m'éclairer :-s
|
|
vendredi 12 septembre 2008 à 10:59:59 |
Re : sp_databases et sp_datainfo inexistant dans procedure stockée système ?

surfman
|
j'ai oublié de préciser que ces procédures était dans la table master
|
|
vendredi 12 septembre 2008 à 14:16:47 |
Re : sp_databases et sp_datainfo inexistant dans procedure stockée système ?

crn_c21
|
Voici la proc sp_datatype_info parc ontre je ne sais comment la transformer en procédure système :
CREATE procedure [sys].[sp_datatype_info] ( @data_type int = 0, @ODBCVer tinyint = 2 ) as declare @mintype int declare @maxtype int
set @ODBCVer = isnull(@ODBCVer, 2) if @ODBCVer < 3 -- includes ODBC 1.0 as well set @ODBCVer = 2 else set @ODBCVer = 3
if @data_type = 0 begin select @mintype = -32768 select @maxtype = 32767 end else begin select @mintype = @data_type select @maxtype = @data_type end
select TYPE_NAME = convert(sysname, case when t.user_type_id > 255 then t.name else d.TYPE_NAME collate database_default end), DATA_TYPE = convert(smallint, -- backward-compatible ODBC types case when (d.ss_dtype = 240) then -- CLR UDT -4 when (d.ss_dtype = 241) then -- XML -10 else d.DATA_TYPE end), "PRECISION" = convert(int, case when (d.DATA_TYPE in (6,7,-150)) then d.data_precision -- FLOAT/REAL/sql_variant when (d.ss_dtype = 241) then 1073741823 -- XML is the same as ntext for pre-Yukon clients when d.ss_dtype in (106,108) and t.user_type_id <= 255 then @@max_precision -- DECIMAL/NUMERIC else OdbcPrec(t.system_type_id, t.max_length, t.precision) end), LITERAL_PREFIX = d.LITERAL_PREFIX, LITERAL_SUFFIX = d.LITERAL_SUFFIX, CREATE_PARAMS = e.CREATE_PARAMS, NULLABLE = convert(smallint, case when d.AUTO_INCREMENT = 1 then 0 -- IDENTITY else TypeProperty (t.name, 'AllowsNull') end), CASE_SENSITIVE = convert (smallint, case when d.ss_dtype = 241 then 1 -- SQL_SS_XML is always case sensitive when d.DATA_TYPE in (1, -1, 12, -8, -9, -10) then -- char/text/varchar/nchar/nvarchar/ntext case when 'a' <> 'A' then 1 else 0 end else 0 end), SEARCHABLE = d.SEARCHABLE, UNSIGNED_ATTRIBUTE = d.UNSIGNED_ATTRIBUTE, MONEY = d.MONEY, AUTO_INCREMENT = convert(smallint, case -- money/float/real/tinyint/smallmoney/smallint/int/decimal/numeric/bigint when d.ss_dtype in (60, 62, 59, 122, 48, 52, 56, 106, 108, 127) then d.AUTO_INCREMENT else null -- not applicable for other types end), LOCAL_TYPE_NAME = convert(sysname, case when t.user_type_id > 255 then t.name else d.LOCAL_TYPE_NAME collate database_default end), MINIMUM_SCALE = convert(smallint, case when d.ss_dtype in (106,108) and t.user_type_id > 255 then TypeProperty (t.name, 'Scale') else d.numeric_scale end), MAXIMUM_SCALE = convert(smallint, case when d.ss_dtype in (106,108) and d.AUTO_INCREMENT = 0 and t.user_type_id <= 255 then @@max_precision -- DECIMAL/NUMERIC when (d.ss_dtype in (106,108) and d.AUTO_INCREMENT = 1) or (d.ss_dtype in (98, 104)) then 0 -- DECIMAL/NUMERIC IDENTITY/SQL_VARIANT/BIT else TypeProperty (t.name, 'Scale') end), SQL_DATA_TYPE = convert(smallint, -- backward-compatible ODBC types case when (d.ss_dtype = 240) then -- CLR UDT -4 when (d.ss_dtype = 241) then -- XML -10 else d.SQL_DATA_TYPE end), SQL_DATETIME_SUB = d.SQL_DATETIME_SUB, NUM_PREC_RADIX = convert(int,d.RADIX), INTERVAL_PRECISION = convert(smallint,NULL), USERTYPE = convert(smallint, typeproperty(t.name, 'oldusertype'))
from sys.spt_datatype_info d inner join sys.types t on ( -- We have to return all system types and SQL UDTs (as Shiloh does), -- but no CLR UDTs. d.ss_dtype = t.system_type_id and ( d.ss_usertype = t.user_type_id or -- system UDTs & regular types ( t.system_type_id <> 240 and t.user_type_id > 255 and -- SQL UDTs d.ss_dtype <> 240 and d.ss_usertype = d.ss_dtype ) ) ) left outer join sys.spt_datatype_info_ext e on ( t.user_type_id = e.user_type and d.AUTO_INCREMENT = e.AUTO_INCREMENT )
where d.DATA_TYPE between @mintype and @maxtype and d.ODBCVer = @ODBCVer and (t.user_type_id <= 255 or d.AUTO_INCREMENT = 0)
order by 2, 12, 11, 20
|
|
mardi 16 septembre 2008 à 10:49:03 |
Re : sp_databases et sp_datainfo inexistant dans procedure stockée système ?

surfman
|
Merci beaucoup pour la copie du contenue de la procédure, mais j'ai toujours un soucis, lorsque je créer la procédure :
Msg 156, Niveau 15, État 1, Procédure sp_datatype_info, Ligne 52 Syntaxe incorrecte vers le mot clé 'precision'.
Quelqu'un serait-il m'aider ?
J'utilise SQL 2000
|
|
mardi 16 septembre 2008 à 12:47:44 |
Re : sp_databases et sp_datainfo inexistant dans procedure stockée système ?

surfman
|
Réponse acceptée !
C'est fou l'aide qu'on peut avoir... J'ai ENCORE une fois trouvé par moi même :
Création d'une procédure stockée SYSTEME :
" USE master go
DROP proc sp_xxxx (le nom de votre procédure stockée) go
SET QUOTED_IDENTIFIER ON go
-- -- Object will be created with MSShipped flag -- EXEC sp_MS_upd_sysobj_category 1 go
ICI METTRE LE CODE COMPLET DE VOTRE PROCEDURE STOCKEE go
GRANT EXEC ON sp_xxxx (le nom de votre procédure stockée) TO public go
-- -- Turn off MSShipped flag for any other SP's (not that we're creating any) -- EXEC sp_MS_upd_sysobj_category 2 go
-- -- Allow updates and hack sysobjects directly. Make sure sp is marked as with -- quoted identifiers and MSShipped -- exec sp_configure 'allow updates', 1 reconfigure with override go
update sysobjects set status = 0x80000009 where name = 'sp_xxxx (le nom de votre procédure stockée)' go
exec sp_configure 'allow updates', 0 reconfigure with override go "
Et pour ceux qui ont eu la boulette comme moi d'executer une procédure stockée, qui s'éfface ensuite automatiquement des procédures stockée système (si vous avez le malheur de la supprimer ensuite en tant que procédure stockée, vous perdez le code et la fonctionnalité, aucune protection... contre ce genre de bouse)
Voici SP_DATABASES :
" set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO
/* Procedure for 8.0 server */ Create proc [sp_databases] as set nocount on declare @name sysname declare @SQL nvarchar(600)
/* Use temporary table to sum up database size w/o using group by */ create table #databases ( DATABASE_NAME sysname NOT NULL, size int NOT NULL)
declare c1 cursor for select name from master.dbo.sysdatabases where has_dbaccess(name) = 1 -- Only look at databases to which we have access
open c1 fetch c1 into @name
while @@fetch_status >= 0 begin select @SQL = 'insert into #databases select N'''+ @name + ''', sum(size) from ' + QuoteName(@name) + '.dbo.sysfiles' /* Insert row for each database */ execute (@SQL) fetch c1 into @name end deallocate c1
select DATABASE_NAME, DATABASE_SIZE = size*8,/* Convert from 8192 byte pages to K */ REMARKS = convert(varchar(254),null) /* Remarks are NULL */ from #databases order by 1 "
et voici SP_DATATYPE_INFO :
" CREATE proc [sp_datatype_info] ( @data_type int = 0, @ODBCVer tinyint = 2 ) as declare @mintype int declare @maxtype int
set @ODBCVer = isnull(@ODBCVer, 2) if @ODBCVer < 3 -- includes ODBC 1.0 as well set @ODBCVer = 2 else set @ODBCVer = 3
if @data_type = 0 begin select @mintype = -32768 select @maxtype = 32767 end else begin select @mintype = @data_type select @maxtype = @data_type end
select TYPE_NAME = convert(sysname, case when t.user_type_id > 255 then t.name else d.TYPE_NAME collate database_default end), DATA_TYPE = convert(smallint, -- backward-compatible ODBC types case when (d.ss_dtype = 240) then -- CLR UDT -4 when (d.ss_dtype = 241) then -- XML -10 else d.DATA_TYPE end), "PRECISION" = convert(int, case when (d.DATA_TYPE in (6,7,-150)) then d.data_precision -- FLOAT/REAL/sql_variant when (d.ss_dtype = 241) then 1073741823 -- XML is the same as ntext for pre-Yukon clients when d.ss_dtype in (106,108) and t.user_type_id <= 255 then @@max_precision -- DECIMAL/NUMERIC else OdbcPrec(t.system_type_id, t.max_length, t.precision) end), LITERAL_PREFIX = d.LITERAL_PREFIX, LITERAL_SUFFIX = d.LITERAL_SUFFIX, CREATE_PARAMS = e.CREATE_PARAMS, NULLABLE = convert(smallint, case when d.AUTO_INCREMENT = 1 then 0 -- IDENTITY else TypeProperty (t.name, 'AllowsNull') end), CASE_SENSITIVE = convert (smallint, case when d.ss_dtype = 241 then 1 -- SQL_SS_XML is always case sensitive when d.DATA_TYPE in (1, -1, 12, -8, -9, -10) then -- char/text/varchar/nchar/nvarchar/ntext case when 'a' <> 'A' then 1 else 0 end else 0 end), SEARCHABLE = d.SEARCHABLE, UNSIGNED_ATTRIBUTE = d.UNSIGNED_ATTRIBUTE, MONEY = d.MONEY, AUTO_INCREMENT = convert(smallint, case -- money/float/real/tinyint/smallmoney/smallint/int/decimal/numeric/bigint when d.ss_dtype in (60, 62, 59, 122, 48, 52, 56, 106, 108, 127) then d.AUTO_INCREMENT else null -- not applicable for other types end), LOCAL_TYPE_NAME = convert(sysname, case when t.user_type_id > 255 then t.name else d.LOCAL_TYPE_NAME collate database_default end), MINIMUM_SCALE = convert(smallint, case when d.ss_dtype in (106,108) and t.user_type_id > 255 then TypeProperty (t.name, 'Scale') else d.numeric_scale end), MAXIMUM_SCALE = convert(smallint, case when d.ss_dtype in (106,108) and d.AUTO_INCREMENT = 0 and t.user_type_id <= 255 then @@max_precision -- DECIMAL/NUMERIC when (d.ss_dtype in (106,108) and d.AUTO_INCREMENT = 1) or (d.ss_dtype in (98, 104)) then 0 -- DECIMAL/NUMERIC IDENTITY/SQL_VARIANT/BIT else TypeProperty (t.name, 'Scale') end), SQL_DATA_TYPE = convert(smallint, -- backward-compatible ODBC types case when (d.ss_dtype = 240) then -- CLR UDT -4 when (d.ss_dtype = 241) then -- XML -10 else d.SQL_DATA_TYPE end), SQL_DATETIME_SUB = d.SQL_DATETIME_SUB, NUM_PREC_RADIX = convert(int,d.RADIX), INTERVAL_PRECISION = convert(smallint,NULL), USERTYPE = convert(smallint, typeproperty(t.name, 'oldusertype'))
from sys.spt_datatype_info d inner join sys.types t on ( -- We have to return all system types and SQL UDTs (as Shiloh does), -- but no CLR UDTs. d.ss_dtype = t.system_type_id and ( d.ss_usertype = t.user_type_id or -- system UDTs & regular types ( t.system_type_id <> 240 and t.user_type_id > 255 and -- SQL UDTs d.ss_dtype <> 240 and d.ss_usertype = d.ss_dtype ) ) ) left outer join sys.spt_datatype_info_ext e on ( t.user_type_id = e.user_type and d.AUTO_INCREMENT = e.AUTO_INCREMENT )
where d.DATA_TYPE between @mintype and @maxtype and d.ODBCVer = @ODBCVer and (t.user_type_id <= 255 or d.AUTO_INCREMENT = 0)
order by 2, 12, 11, 20 "
|
|
mardi 16 septembre 2008 à 12:50:40 |
Re : sp_databases et sp_datainfo inexistant dans procedure stockée système ?

surfman
|
Réponse acceptée !
Arf je me suis trompé pour SP_DATATYPE_INFO, le bon code est :
"
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO
/* Procedure for 8.0 server */ CREATE proc [sp_datatype_info] (@data_type int = 0, @ODBCVer tinyint = 2) as declare @mintype int declare @maxtype int
if @ODBCVer <> 3 select @ODBCVer = 2 if @data_type = 0 begin select @mintype = -32768 select @maxtype = 32767 end else begin select @mintype = @data_type select @maxtype = @data_type end
select convert(sysname,case when t.xusertype > 255 then t.name else d.TYPE_NAME collate database_default end) TYPE_NAME, d.DATA_TYPE, convert(int,case when d.DATA_TYPE in (6,7,-150) then d.data_precision /* FLOAT/REAL/sql_variant*/ when d.ss_dtype in (55,63,106,108) and t.xusertype <= 255 then @@max_precision /* DECIMAL/NUMERIC */ else OdbcPrec(t.xtype, t.length, t.xprec) end) "PRECISION", d.LITERAL_PREFIX, d.LITERAL_SUFFIX, e.CREATE_PARAMS, convert(smallint,case when d.AUTO_INCREMENT = 1 then 0 /* IDENTITY*/ else TypeProperty (t.name, 'AllowsNull') end) NULLABLE, d.CASE_SENSITIVE, d.SEARCHABLE, d.UNSIGNED_ATTRIBUTE, d.MONEY, d.AUTO_INCREMENT, convert(sysname,case when t.xusertype > 255 then t.name else d.LOCAL_TYPE_NAME collate database_default end) LOCAL_TYPE_NAME, convert(smallint,case when d.ss_dtype in (55,63,106,108) and t.xusertype > 255 then TypeProperty (t.name, 'Scale') else d.numeric_scale end) MINIMUM_SCALE, convert(smallint,case when d.ss_dtype in (55,63,106,108) and d.AUTO_INCREMENT = 0 and t.xusertype <= 255 then @@max_precision /* DECIMAL/NUMERIC */ when d.ss_dtype in (55,63,106,108) and d.AUTO_INCREMENT = 1 then 0 /* DECIMAL/NUMERIC IDENTITY*/ else TypeProperty (t.name, 'Scale') end) MAXIMUM_SCALE, d.SQL_DATA_TYPE, d.SQL_DATETIME_SUB, NUM_PREC_RADIX = convert(int,d.RADIX), INTERVAL_PRECISION = convert(smallint,NULL), USERTYPE = t.usertype from master.dbo.spt_datatype_info d INNER JOIN systypes t on d.ss_dtype = t.xtype LEFT OUTER JOIN master.dbo.spt_datatype_info_ext e on t.xusertype = e.user_type and isnull(d.AUTO_INCREMENT,0) = e.AUTO_INCREMENT where d.DATA_TYPE between @mintype and @maxtype and (d.ODBCVer is null or d.ODBCVer = @ODBCVer) and (t.xusertype <= 255 or isnull(d.AUTO_INCREMENT,0) = 0) order by 2, 12, 11, case when t.usertype=18 then 255 else t.usertype end "
Le code fourni plus haut et pour SQL 2005, or j'utilise SQL 2000
|
|
Cette discussion est classée dans : système, stockée, procédure, sp, databases
Répondre à ce message
Sujets en rapport avec ce message
Comment trouver le host dans une procédure stockée [ par btorchet ]
Bonjour,Je voudrais rerouver le host, nom de la machine, du poste a partir duquyel a été appelé une procédure stockée.Je connais host_name, quand je l
Like dans une procédure stockée [ par veronique1 ]
Bonjour à tous,j'utilise une requête dans une procédure stockée avec un like , la valeur provient d'un paramètre , et ma rquête ne fonctionne pas si j
Probleme avec Select Case [ par Geff ]
Bonjour à tous!J'ai un petit problème pour écrire une procédure stockée pour Sql Server 2000.Voici les données de mon problèmeJ'ai une table client et
Une procédure stockée pour : Ajouter OU Modifier OU Supprimer [ par Bowen123 ]
Bonjour,Je cherche a créer une procédure stockée pour ajouter,mettre a jour ou supprimer un element à partir d'un "id".Quelqu'un peut me mettre sur la
Paramètre de procédure stockée null [ par Leggoff ]
Bonjour à tous.Je souhaite passer en C# un paramètre null à une procédure stockée (Ma toute première procédure !).L'utilisation de null ne fonctionne
Procédure stockée [ par batobad ]
bonjourj'ai une base de données sur sql server qui contient quatre tables dont l'une, que j'ai appélée article, contient une clé primaire et trois clé
Abandon de transaction suite TimeOut dans procédure stockée [ par foxfred ]
Bonjour,Une procédure stockée appelée depuis une appli VB.Net effectue le traitement suivant :BEGIN TRANSACTION -- Suppression d'une contrainte dans
Récupérer le code d'une procédure stockée [ par yoannd ]
Bonjour les gens, Alors voila, je souhaite récupérer, au moyen d'une requete SQL, le code d'une procédure stockée (n'importe laquelle). Je sais que c
log procédure stockée (SQL Server) [ par jguillemette ]
bonjour,à partir d'un *.bat je lance un DTS qui exécute une procédure stockéla trace de l'exécution du *.bat est redigée dans un fichier logce dernier
PROMPT dans une procédure stockée [ par tedparker ]
Bonjour Est-il possible de demander des paramètres par un PROMPT dans une procédure PL SQL ? J'en ai super besoin. Je crée ma procédure dans un pack
Livres en rapport
|
Derniers Blogs
[ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1[ASTUCE] PATCH POUR MICROSOFT FORUMS NNTP BRIDGE V1 par pierre
Si vous avez téléchargé comme moi Microsoft Forums NNTP Bridge V1 avant le 11 mars 2010 (voir [Astuce] Disponibilité de Microsoft Forum NNTP Bridge Version 1.0), un problème de date localisée pour les non anglais était présent. Un patch est disponibl...
Cliquez pour lire la suite de l'article par pierre PB LORS DE L'INSTALLATION SHAREPOINT 2010.PB LORS DE L'INSTALLATION SHAREPOINT 2010. par Patrick Guimonet
Lors de l'installation de SharePoint 2010, j'ai rencontré un problème de plantage à l'étape 5 du configuration Wizard. Ca se termine sur cet écran : Et en analysant le fichier de journalisation, on remarque vers la fin des 15000 et quelques lign...
Cliquez pour lire la suite de l'article par Patrick Guimonet [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2) par JeremyJeanson
Après mon précédent article qui attaque les contraintes par la fasse Nord de l'Everest. passons à la seconde possibilité offerte par WF4 pour valider une activité : la metadata . Je vous en ai déjà toucher un ou deux mots. La metadata dans WF4 est un élém...
Cliquez pour lire la suite de l'article par JeremyJeanson [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2) par JeremyJeanson
De WF3 à WF4 pas mal de choses on été changées pour faciliter la vie des développeurs, mais certain points peuvent sembler obscures. comme les contraintes. Pour vous guider, je me lance dans une série de deux articles. Ils présenterons deux approches poss...
Cliquez pour lire la suite de l'article par JeremyJeanson [ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT()[ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT() par tja
Beaucoup de développeurs pensent que lorsqu'on créé et enregistre un IHttpModule, il n'en existe qu'une seule instance et la méthode Init() sera appelée qu'une fois.
C'est faux
Cela peut vraiment créer des bugs subtils dont en ne se rend pas compte ...
Cliquez pour lire la suite de l'article par tja
Forum
SQLSQL par laila89
Cliquez pour lire la suite par laila89 DATEPARTDATEPART par lilia04
Cliquez pour lire la suite par lilia04
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|