microsoft/mssql-scripter

Access is denied when executed with include-objects argument

ackris opened this issue · 1 comments

Hello Everyone

I am pretty excited about using mssql-scripter, and it is working fine. Recently I have come across this issue where the inclusion of --include-objects argument is causing Access if denied to fs path.

But the utility is creating scripts if I execute the utility without --include-objects argument to the same fs path.

Please find below the outputs.

With include-objects args...

C:\Users\abcd\eclipse-workspace\Utilities\Windows>mssql-scripter -S ABCD\SQLEXPRESS -d cmsdb -U admin -P admin@123 --file-path C:\MyCave\iso\SDG\Integra\Intest\sqlscriptgen --include-objects dbo.patchlog_details
Scripting request: 512bea1c-e6ea-40ea-89b9-3f73b96ab8d0 encountered error: File writing exception.
Error details: Microsoft.SqlServer.Management.Smo.ScriptWriterException: File writing exception. ---> System.UnauthorizedAccessException: Access to the path 'C:\MyCave\iso\SDG\Integra\Intest\sqlscriptgen' is denied.
   at System.IO.FileStream.ValidateFileHandle(SafeFileHandle fileHandle)
   at System.IO.FileStream.CreateFileOpenHandle(FileMode mode, FileShare share, FileOptions options)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at Microsoft.SqlServer.Management.Smo.NetCoreHelpers.CreateFileStream(String path, Boolean appendToFile)
   at Microsoft.SqlServer.Management.Smo.SingleFileWriter.Init(String path, Boolean appendToFile, Encoding encoding)
   --- End of inner exception stack trace ---
   at Microsoft.SqlServer.Management.Smo.SingleFileWriter.Init(String path, Boolean appendToFile, Encoding encoding)
   at Microsoft.SqlServer.Management.Smo.SingleFileWriter..ctor(String path, Boolean appendToFile, Encoding encoding)
   at Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptGenerator.GetScriptWriter(ScriptOutputOptions outputOptions)
   at Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptGenerator.DoScript(ScriptOutputOptions outputOptions)
   at Microsoft.SqlServer.Management.SqlScriptPublish.SqlScriptPublishModel.GenerateScript(ScriptOutputOptions outputOptions)
   at Microsoft.SqlTools.ServiceLayer.Scripting.ScriptingScriptOperation.Execute() in D:\repos\sqltoolsservice\src\Microsoft.SqlTools.ServiceLayer\Scripting\ScriptingScriptOperation.cs:line 62

Now without include-options argument


C:\Users\abcd\eclipse-workspace\Utilities\Windows>mssql-scripter -S ABCD\SQLEXPRESS -d cmsdb -U admin -P admin@123 --file-path C:\MyCave\iso\SDG\Integra\Intest\sqlscriptgen --file-per-object --ansi-padding --display-progress --include-dependencies
Scripting request: f4f8e0d6-0fc7-44fe-9c2d-4a94b51fb972 plan: 8 database objects
Scripting progress: Status: Progress Progress: 0 out of 8 objects scripted
Scripting progress: Status: Progress Progress: 0 out of 8 objects scripted
Scripting progress: Status: Progress Progress: 0 out of 8 objects scripted
Scripting progress: Status: Completed Progress: 1 out of 8 objects scripted
Scripting progress: Status: Completed Progress: 2 out of 8 objects scripted
Scripting progress: Status: Progress Progress: 2 out of 8 objects scripted
Scripting progress: Status: Progress Progress: 2 out of 8 objects scripted
Scripting progress: Status: Completed Progress: 3 out of 8 objects scripted
Scripting progress: Status: Completed Progress: 4 out of 8 objects scripted
Scripting progress: Status: Completed Progress: 5 out of 8 objects scripted
Scripting progress: Status: Completed Progress: 6 out of 8 objects scripted
Scripting progress: Status: Completed Progress: 7 out of 8 objects scripted
Scripting progress: Status: Completed Progress: 8 out of 8 objects scripted

Is this a bug?

I am the admin of FS and DB.

Ideally the utility must create scripts if include-objects is also specified.

Regards
Kris

Hi Everyone

I have tried to run the utility by adding --include-objects argument with --file-per-object arg.

It is now creating a script.

C:\Users\abcd\eclipse-workspace\Utilities\Windows>mssql-scripter -S ABCD\SQLEXPRESS -d cmsdb -U admin -P admin@123 --file-path C:\MyCave\iso\SDG\Integra\Intest --file-per-object --ansi-padding --display-progress --include-objects dbo.selectUsers_SP
Scripting request: d20a3ebc-9793-4c87-817c-635d9880f7e6 plan: 1 database objects
Scripting progress: Status: Completed Progress: 1 out of 1 objects scripted
Scripting request: d20a3ebc-9793-4c87-817c-635d9880f7e6 completed
warning: Target directory C:\MyCave\iso\SDG\Integra\Intest was not empty.

I consider it a close. But I will open it again if it relapses.

Regards
Kris