>>>>>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'
Against Stupidity the Gods themselves Contend in Vain - Johann Christoph Friedrich von Schiller
The only thing normal about database guys is their tables.