[英]How do I generically reference a local table in a SQL Server database from an assembly installed in that database?
假设我有一个程序集,该程序集带有我已经安装在SQL Server数据库中的does_stuff()
方法。 我希望此方法/ storedproc引用数据库中的特定已知表。 我如何在不知道宿主在哪里的情况下获取does_stuff
访问表的内容?
假设does_stuff
应该访问表info_config
。 如果它托管在数据库ALPHA
,它将访问ALPHA.info_config
如果它托管在数据库BETA
,它将访问BETA.info_config
我知道如何使用ADO.NET打开数据库连接等,但是这些需要特定的服务器和数据库字符串。 我需要灵活性,以便无论在哪里托管程序集都可以执行相同的操作。
Google搜索没有给我任何帮助。
提前致谢
您所要做的就是使用上下文连接 。
目前,它似乎并不明显,但是CLR代码总是在某些上下文中执行。 总有某人(某人)直接或在某些父范围内执行代码(存储过程调用CLR函数,在插入时触发CLR触发器等)。 当程序执行到达上下文连接时,它仅使用该作用域的连接参数(服务器,数据库,SET选项等)。
I want this method/storedproc to refer to a specific known table in the database.
打开上下文连接后,您将照常查询数据库。
using (SqlConnection conn = new SqlConnection("context connection=true"))
{
conn.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM MyTable");
SqlContext.Pipe.ExecuteAndSend(cmd);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.