Trying to traverse all objects in the SQL Server database, scripting the object creation to .sql file, to be stored within a source code repository.
We are using Powershell calling SMO to create the DDL files. Basically, it works well for all dbo schema objects. Any other user defined schemas are not being processed correctly.
The Powershell script is attached. At line 21 you can see where we tried to handle the schema with this: $Object=$Schema + "." + $Object
./schemaextract.ps1 "c:\temp" "ServerName" "DatabaseName" "Table" "dbo" "TableA"
This works, but the object is qualified with ‘dbo’, instead of ‘OtherSchema’. ‘TableA’ exists within both schemas:
./schemaextract.ps1 "c:\temp" "ServerName" "DatabaseName" "Table" "OtherSchema" "TableA"
This fails, presumably because ‘TableB’ is only in ‘OtherSchema’:
./schemaextract.ps1 "c:\temp" "ServerName" "DatabaseName" "Table" "OtherSchema" "TableB"
We have tried unsuccessfully to pass in the schema name. When attempting to do so, this is the failure:
PS C:\mssql\tools> ./schemaextract.ps1 "c:\temp" "ServerName" "DatabaseName" "Table" "dbo" "TableA"
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 12/21/2012 2:46 PM Tables
Multiple ambiguous overloads found for "Script" and the argument count: "1".
At C:\mssql\tools\SchemaExtract.ps1:97 char:20
+ $scrp.Script <<<< ($db.Tables["$Object"])
+ CategoryInfo : NotSpecified: (:) , MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
We did this several years back with SMO -- no problems at all. But, we had only the 'dbo' schema at that time. Is anyone able to advise? SchemaExtract.txt
”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.
-Mike Kapnisakis, Warner Bros
With your subscription - you'll gain access to our exclusive IT community of thousands of IT pros. You'll also be able to connect with highly specified Experts to get personalized solutions to your troubleshooting & research questions. It’s like crowd-sourced consulting.
We can't always guarantee that the perfect solution to your specific problem will be waiting for you. If you ask your own question - our Certified Experts will team up with you to help you get the answers you need.
Our certified Experts are CTOs, CISOs, and Technical Architects who answer questions, write articles, and produce videos on Experts Exchange. 99% of them have full time tech jobs - they volunteer their time to help other people in the technology industry learn and succeed.
We can't guarantee quick solutions - Experts Exchange isn't a help desk. We're a community of IT professionals committed to sharing knowledge. Our experts volunteer their time to help other people in the technology industry learn and succeed.