When you use an undocumented stored procedure, you run the risk of not being able to upgrade your database to a new version. What's worse... you could have broken functionality and not even know it. With undocumented stored procedures, Microsoft may not document when they decide to deprecate it, so you may not know about your broken functionality until it's too late.
Presented below is a hard coded list of undocumented stored procedures. By their very nature, it is hard to find documentation on undocumented procedures. Therefore, the procedures in the list below is likely to be incomplete.
How to detect this problem:
- DECLARE @Temp TABLE(ProcedureName VARCHAR(50))
- INSERT INTO @Temp VALUES('sp_MStablespace')
- INSERT INTO @Temp VALUES('sp_who2')
- INSERT INTO @Temp VALUES('sp_tempdbspace')
- INSERT INTO @Temp VALUES('sp_MSkilldb')
- INSERT INTO @Temp VALUES('sp_MSindexspace')
- INSERT INTO @Temp VALUES('sp_MShelptype')
- INSERT INTO @Temp VALUES('sp_MShelpindex')
- INSERT INTO @Temp VALUES('sp_MShelpcolumns')
- INSERT INTO @Temp VALUES('sp_MSforeachtable')
- INSERT INTO @Temp VALUES('sp_MSforeachdb')
- INSERT INTO @Temp VALUES('sp_fixindex')
- INSERT INTO @Temp VALUES('sp_columns_rowset')
- INSERT INTO @Temp VALUES('sp_MScheck_uid_owns_anything')
- INSERT INTO @Temp VALUES('sp_MSgettools_path')
- INSERT INTO @Temp VALUES('sp_gettypestring')
- INSERT INTO @Temp VALUES('sp_MSdrop_object')
- INSERT INTO @Temp VALUES('sp_MSget_qualified_name')
- INSERT INTO @Temp VALUES('sp_MSgetversion')
- INSERT INTO @Temp VALUES('xp_dirtree')
- INSERT INTO @Temp VALUES('xp_subdirs')
- INSERT INTO @Temp VALUES('xp_enum_oledb_providers')
- INSERT INTO @Temp VALUES('xp_enumcodepages')
- INSERT INTO @Temp VALUES('xp_enumdsn')
- INSERT INTO @Temp VALUES('xp_enumerrorlogs')
- INSERT INTO @Temp VALUES('xp_enumgroups')
- INSERT INTO @Temp VALUES('xp_fileexist')
- INSERT INTO @Temp VALUES('xp_fixeddrives')
- INSERT INTO @Temp VALUES('xp_getnetname')
- INSERT INTO @Temp VALUES('xp_readerrorlog')
- INSERT INTO @Temp VALUES('sp_msdependencies')
- INSERT INTO @Temp VALUES('xp_qv')
- INSERT INTO @Temp VALUES('xp_delete_file')
- INSERT INTO @Temp VALUES('sp_checknames')
- INSERT INTO @Temp VALUES('sp_enumoledbdatasources')
- INSERT INTO @Temp VALUES('sp_MS_marksystemobject')
- INSERT INTO @Temp VALUES('sp_MSaddguidcolumn')
- INSERT INTO @Temp VALUES('sp_MSaddguidindex')
- INSERT INTO @Temp VALUES('sp_MSaddlogin_implicit_ntlogin')
- INSERT INTO @Temp VALUES('sp_MSadduser_implicit_ntlogin')
- INSERT INTO @Temp VALUES('sp_MSdbuseraccess')
- INSERT INTO @Temp VALUES('sp_MSdbuserpriv')
- INSERT INTO @Temp VALUES('sp_MSloginmappings')
- INSERT INTO @Temp VALUES('sp_MStablekeys')
- INSERT INTO @Temp VALUES('sp_MStablerefs')
- INSERT INTO @Temp VALUES('sp_MSuniquetempname')
- INSERT INTO @Temp VALUES('sp_MSuniqueobjectname')
- INSERT INTO @Temp VALUES('sp_MSuniquecolname')
- INSERT INTO @Temp VALUES('sp_MSuniquename')
- INSERT INTO @Temp VALUES('sp_MSunc_to_drive')
- INSERT INTO @Temp VALUES('sp_MSis_pk_col')
- INSERT INTO @Temp VALUES('xp_get_MAPI_default_profile')
- INSERT INTO @Temp VALUES('xp_get_MAPI_profiles')
- INSERT INTO @Temp VALUES('xp_regdeletekey')
- INSERT INTO @Temp VALUES('xp_regdeletevalue')
- INSERT INTO @Temp VALUES('xp_regread')
- INSERT INTO @Temp VALUES('xp_regenumvalues')
- INSERT INTO @Temp VALUES('xp_regaddmultistring')
- INSERT INTO @Temp VALUES('xp_regremovemultistring')
- INSERT INTO @Temp VALUES('xp_regwrite')
- INSERT INTO @Temp VALUES('xp_varbintohexstr')
- INSERT INTO @Temp VALUES('sp_MSguidtostr')
- SELECT DISTINCT Name
- FROM sysobjects
- INNER Join @Temp T
- ON Object_Definition(id) Like '%' + T.ProcedureName + '%'
- WHERE XType = 'P'
- And OBJECTPROPERTY(ID, N'IsMSShipped') = 0
- ORDER BY Name
How to correct it: Rewrite your functionality so that is does not rely upon undocumented procedures.
Level of severity: moderate to high
Level of difficulty: moderate to high. Undocumented stored procedures are often used because it's easy. Replacing it is usually NOT easy.



LTD Social Sitings
Note: Watch for social icons on posts by your favorite authors to follow their postings on these and other social sites.