Jag har använt "SELECT * FROM INFORMATION_SCHEMA.SCHEMATAS" för att hämta en lista på alla databaser på en SQL-Server. Mig veterligen har det inte varit några problem med den tidigare, men nu när jag testade en applikation jag skrev för ca ett år sedan så fick jag inte en komplett lista över databaser. Det saknades ca 6-7 stycken av ca 30 databaser på servern. Någon som har någon aning om varför, eller som har haft liknande problem? Jag körde ditt exempel på min SQL-Server 2000 och den visade alla rätt. Det finns ingen chans att du inte är inloggad som admin eller några andra rättigheter ställer till det? Jag har testat det på flera databaser och generellt så verkar det fungera när man har få databaser, fast det kan ju ha rent statistiska förklaringar. När jag fått problem så har det handlat om 20+ databaser. Har fått lite mer information. Problemet verkar bero på att jag har null-värden i vissa kolumner som berör CharacterSets. Exakt varför det blivit så vet jag inte, men det kan bero på att databaserna kommer från SQL-server 6.5 eller 7.0 från början och att något gått snett när de uppgraderats. I mitt fall kunde jag komma runt problemet genom att ställa frågan mot "sysdatabases"-tabellen i stället, eftersom jag ändå bara behöver namnet på databasen, men det löser ju inte det verkliga problemet.Inkomplett databaslista (INFORMATION_SCHEMA.SCHEMATAS)
Använder man "SELECT * FROM master.dbo.sysdatabases" så är listan komplett, men det måste finnas något skäl till att schemat inte returnerar samtliga databaser.
SCHEMATA-vyn (som följer med SQL-server) är deklarerad så här :
<code>
select
db.name as CATALOG_NAME
,USER_NAME() as SCHEMA_NAME
,USER_NAME() as SCHEMA_OWNER
,convert(sysname, NULL) as DEFAULT_CHARACTER_SET_CATALOG
,convert(sysname, NULL) as DEFAULT_CHARACTER_SET_SCHEMA
,a_cha.name as DEFAULT_CHARACTER_SET_NAME
,a_cha.type
FROM
master.dbo.sysdatabases db,
master.dbo.syscharsets a_cha --charset/1001, not sortorder.
WHERE
a_cha.type = 1001 AND --- type is charset
a_cha.id = convert(tinyint, DatabasePropertyEx(db.name, 'sqlcharset'))
</code>Sv: Inkomplett databaslista (INFORMATION_SCHEMA.SCHEMATAS)
Sv: Inkomplett databaslista (INFORMATION_SCHEMA.SCHEMATAS)
Jag har loggat in som "sa" varje gång, och en kollega fick exakt samma problem mot sin SQL-server. Vad han loggade in som vet jag inte men med största sannolikhet som "sa" också.
Tittar man på SQL:en för vyn så ser man ju att det enda som kan "gallra bort" databaser är ju joinen mot master.dbo.syscharsets. Så troligen så har det något med detta att göra.Sv: Inkomplett databaslista (INFORMATION_SCHEMA.SCHEMATAS)
/PerSv: Inkomplett databaslista (INFORMATION_SCHEMA.SCHEMATAS)