>>>>>>Hi,
>>>>>>
>>>>>>I would like to write a script to scan all databases in SQL Server and check a certain table(s). Is there a command in TSQL like FOR NEXT that would allow me to USE each database, one at a time?
>>>>>>
>>>>>>TIA.
>>>>>
>>>>>Check sp_MSForEachDB SP.
>>>>>You can ONLY Goolge the name, it is Undocumented.
>>>>
>>>>Thank you. Do I understand correctly (from just scanning a found article) that I have to create a stored procedure and then the SP you mention will execute it against each database?
>>>
>>>No, you can use it directly.
>>
>>Sorry to still bother you with this question. Here is something I don't get. I found the syntax for using this SP as following:
>>
>>execute sp_MsForEachDb 'USE ?; some script'
>>
>>
>>But my "scrip" has apostrophes (') so I get errors. For example, my script for each database has to check if a certain table exist and if the length of a column in this table is less than certain number, increase it. And I can't see how to create such script without using apostrophes. How would you get around this ?
>
>
>Assuminb that the column you want to check is some kind of CHARs:
>
>execute sp_MsForEachDb 'IF NOT EXISTS(SELECT *
> FROM ?.INFORMATION_SCHEMA.Columns
> WHERE Table_Name = ''YourTableName'' AND
> COLUMN_NAME = ''YourColumnName'' AND
> CHARACTER_MAXIMUM_LENGTH = YourDesiredLength )
> BEGIN
> ALTER TABLE ?.dbo.YourTableName ALTER COLUMN YourColumnName varchar(YourDesiredLength)
> END'
>
So entering two single quotes is the way to resolve it. I didn't know that. Thank you very much!
"The creative process is nothing but a series of crises." Isaac Bashevis Singer
"My experience is that as soon as people are old enough to know better, they don't know anything at all." Oscar Wilde
"If a nation values anything more than freedom, it will lose its freedom; and the irony of it is that if it is comfort or money that it values more, it will lose that too." W.Somerset Maugham