sql - CREATE ASSEMBLY in UNSAFE mode with File path does not create Functions in database -


i trying register clr assembly in sql server following statement:

create assembly sqlclrtest authorization [dbo] 'c:\myapp\sqlclrtest.dll' permission_set = unsafe; 

the clr assembly signed pfx key, , have created asymmetric key , sql login allow installing particular assembly unsafe permissions set.

the problem above statement creates assembly in database, doesn't show sql server functions have created in assembly.

i dont see issue clr assembly, because when publish database through sql server database project in visual studio can see functions getting created in database. when looked publish scripts, see database project uses binary of assembly. means, executes

create assembly sqlclrtest authorization [dbo] 0x4d5a90000300000004000000ffff000....... permission_set = unsafe; 

so questions why assembly gets registered through dll binaries, not when use dll's path?

any on appreciated.

database server: sql server 2012. database project created in visual studio 2013. clr assembly created separate class library project in visual studio 2013.

why assembly gets registered through dll binaries, not when use dll's path?

the issue not creation (what referring getting registered) of assembly. if not error when running create assembly did created successfully.

but, assembly merely contains .net methods can referenced t-sql wrapper objects, creating assembly not automagically create t-sql wrapper objects. need explicitly created.

the main publish script used ssdt diff / incremental script bring target db state implied project. if want create statements regardless of changes being deployed, sure to:

  1. definitely check "generate ddl" option on "sqlclr" tab of project properties. option controls whether or not wrapper object create statements (i.e. create procedure, create function, create type, create aggregate, , create trigger statements) generated.

  2. optionally check "create script (.sql file)" check-box on "project settings" tab of project properties. checked, each time build there {build tab.buildoutputpath}\{build tab.buildoutputfilename}_create.sql script. _create.sql script contain create assembly statement.

when build, there obj\debug\{sqlclr tab.assemblyname}.generated.sql script. script contain create assembly statement. script contain create procedure, create function, create type, create aggregate, , create trigger statements if have "generate ddl" option checked (#1 above). script not runnable out of order, statements in script used generate publish , optional create scripts.

if have "create script" option checked (#2 above), then, assuming have "generate ddl" option checked (#1 again), create procedure, create function, create type, create aggregate, , create trigger statements in {build tab.buildoutputpath}\{build tab.buildoutputfilename}_create.sql script. in script, statements in correct order.


Comments