Database List Hardcoded into SQL Server Management
i'm working on the rtm version of mssql 2005 and i'm wondering to find that the database list are hard coded into SQL Server Management.
I need to hide databases list for (newbie) users on EM 2000 i can hide this list using this kbhttp://support.microsoft.com/?id=889696 but on the new SQLSM
The database list is hard coded into this batch query
SELECT dtb
'Server[@Name='
+quotename(CAST(serverproperty(N'Servername')ASsysname),'''')+']'+'/Database[@Name='+quotename(dtb.name,'''')+']'AS
[Database_Urn],case
-- if all these are false then we are in the Normal state-- except some return NULL if it's AutoClosedwhen(DATABASEPROPERTY(dtb.name,'IsInLoad')= 0and(DATABASEPROPERTY(dtb.name,'IsInRecovery')= 0orDATABASEPROPERTY(dtb.name,'IsInRecovery')isnull)and(DATABASEPROPERTY(dtb.name,'IsNotRecovered')= 0orDATABASEPROPERTY(dtb.name,'IsNotRecovered')isnull)andDATABASEPROPERTY(dtb.name,'IsSuspect')= 0andDATABASEPROPERTY(dtb.name,'IsOffline')= 0andDATABASEPROPERTY(dtb.name,'IsInStandBy')= 0and(DATABASEPROPERTY(dtb.name,'IsShutDown')= 0orDATABASEPROPERTY(dtb.name,'IsShutDown')isnull)andDATABASEPROPERTY(dtb.name,'IsEmergencyMode')= 0)then 1else 0end
|case
whenDATABASEPROPERTY(dtb.name,'IsInLoad')= 1then 2else 0end
|case
whenDATABASEPROPERTY(dtb.name,'IsInRecovery')= 1andDATABASEPROPERTY(dtb.name,'IsNotRecovered')= 1then 4else 0end
|case
whenDATABASEPROPERTY(dtb.name,'IsInRecovery')= 1then 8else 0end
|case
whenDATABASEPROPERTY(dtb.name,'IsSuspect')= 1then 16else 0end
|case
whenDATABASEPROPERTY(dtb.name,'IsOffline')= 1then 32else 0end
|case
whenDATABASEPROPERTY(dtb.name,'IsInStandBy')= 1then 64else 0end
|case
whenDATABASEPROPERTY(dtb.name,'IsShutDown')= 1then 128whenDATABASEPROPERTY(dtb.name,'IsShutDown')isnullthen(512+ 128)else 0end
|case
whenDATABASEPROPERTY(dtb.name,'IsEmergencyMode')= 1then 256else 0end
AS [Database_Status],dtb
.cmptlevelAS [Database_CompatibilityLevel],CASE
DATABASEPROPERTYEX(dtb.name,'Recovery')WHEN'SIMPLE'THEN 3WHEN'BULK_LOGGED'THEN 2ELSE/*FULL*/ 1ENDAS [RecoveryModel],CASE
CONVERT(sysname,DATABASEPROPERTYEX(dtb.name,'UserAccess'))WHEN'SINGLE_USER'THEN 1WHEN'RESTRICTED_USER'THEN 2ELSE/*MULTI_USER*/0
ENDAS [UserAccess],CAST
(DATABASEPROPERTY(dtb.name,'IsReadOnly')ASbit)AS [ReadOnly],dtb
.nameAS [Database_DatabaseName2]FROM
master
.dbo.sysdatabasesAS dtbWHERE
(
CAST(casewhen dtb.namein('master','model','msdb','tempdb')then 1else category& 16endASbit)=0)ORDER
BY[Database_Name]
ASCSo my question it's possible to have a stored procedure on the next fix of mssql 2005 with a stored procedure on the master database to show the database list, i know that the database are listed on the table master.dbo.sysdatabases but i need to hide database for newbie users.

