SMOscript user Eric reported that the tool fails to script all remaining objects of a database once an error occurs trying to generate a CREATE PROCEDURE statement for an encrypted stored procedure.
This problem has been fixed in the latest version 0.14 which is now available for download.
Based on his feedback I want to demonstrate more capabilities of SMOscript:
Logging
While SMOscript does not implement log file functionality, you can still redirect its output to files from the command line using the standard shell redirectors >, >> and 2>.
smoscript ...parameters... >filename.log 2>filename.err
Scripting all databases on a server
To script all databases of a server into separate files in distinct directories, you can use SMOscript to first list all databases, then invoke SMOscript to script each database in the original list:
set basepath=c:\path\to\output\ set first= for /f in "usebackq" %%i in (`smoscript -s localhost`) do ↵ (set db=%%i& call :smo) goto :end :smo if "%first%"=="." ( echo database %db% mkdir %basepath%%db% smoscript -s localhost -d %db% -f %basepath%%db%\create.sql ↵ > %basepath%%db%.log ) set first=. goto :eof :end
The first line of “smoscript -s” is not a database name, so we include it from the list by using the variable named “first”.
The simple combination of SMOscript with a bit of shell magic can be quite efficient.
I can’t find any mention about the source code availability. Is it possible to have access to the source code?