views:

190

answers:

1

Hey all, writing scripts for Sql Server 2005. I am registering a schema with

CREATE XML SCHEMA COLLECTION [dbo].[MySchema] AS N'<xsd:schema ... >'

Now, as I make changes, I would like to drop it, say with a call to

DROP XML SCHEMA COLLECTION [dbo].[MySchema]

I run this stuff fairly frequently as I am developing, like

DROP ...
CREATE ...

but this presents problems on a first-run where the Schema does not exist. I would like to do something similar to

IF OBJECT_ID ('MySchema') IS NOT NULL
    DROP ...
CREATE ...

but OBJECT_ID ('MySchema') just returns NULL. Is there a proper way to test for existence of a registered Xml Schema Collection in Sql Server 2005?

muchos gracias mis amigos :)

+1  A: 

Check sys.xml_schema_collections:

IF EXISTS (SELECT * FROM sys.xml_schema_collections WHERE name = 'MySchema')
Remus Rusanu
d'oh! thank you for the link :)
johnny g
To be 100% accurate you need to check also the schema_id, since XML schema collection objects are (database) schema contained and you may have multiple collections in different schemas (dbo.MySchema, foo.MySchema, bar.MySchema etc)
Remus Rusanu