我尝试了不同的方法来完成这项工作,但没有任何效果。当我运行测试脚本时,VS 似乎忽略了 .cs 文件中的所有断点。我也在测试脚本中包含了一个断点,但仍然没有调试。
这是我尝试过的Microsoft https://msdn.microsoft.com/en-us/library/ms165051(v=vs.100).aspx的指南,但我没有“设置为默认调试脚本”当我右键单击我的脚本文件时的选项。
我有一个用 C# 编写的 SQL CLR 函数,它类似于:
public partial class UserDefinedFunctions
{
[Microsoft.SqlServer.Server.SqlFunction]
public static SqlString Decimal(decimal sum)
{
return sum.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
SQL Server 假定 'sum' 是一种numeric(18,0)类型。
有没有办法在 C# 中更改输入参数的精度和小数位数?
SQL CLR用户定义函数是否可以返回数据类型varbinary(MAX)?
在文档中提到:
"输入参数和从标量值函数返回的类型可以是SQL Server支持的任何标量数据类型,除了rowversion,text,ntext,image,timestamp,table或cursor." - 他们没有提到varbinary,但我不确定......
我有一些来自.NET端的字节数组数据,我需要从CLR返回到SQL Server,我试图避免必须使用存储过程的输出参数(这是我如何拥有它)现在在测试中工作).
谢谢!
我认为"删除后"意味着在删除已经发生之前触发器才会被触发,但这是我的情况......
在C#中删除触发器后,我创建了3个几乎相同的SQL CLR,它工作了大约一个月.突然,三个中的一个停止工作,同时在其上运行自动删除工具.
通过停止工作,我的意思是,无法通过客户端软件从表中删除记录.禁用触发器会导致删除,但重新启用它会干扰删除功能.
所以我的问题是"这怎么可能呢?" 它上面使用的工具是否有可能在记忆中充满活力?似乎即使触发器抛出异常,如果它是删除后,记录不应该消失?
所有触发器看起来都是这样的:
ALTER TRIGGER [sysdba].[AccountTrigger] ON [sysdba].[ACCOUNT] AFTER DELETE AS
EXTERNAL NAME [SQL_IO].[SQL_IO.WriteFunctions].[AccountTrigger]
GO
Run Code Online (Sandbox Code Playgroud)
CLR触发器执行一次选择,一次插入另一个数据库.我还不知道SQL Server Mgmt Studio是否有任何错误,但在我发现之后会更新问题.
更新:
在重新执行上面相同的触发器代码之后,一切都再次起作用,所以我可能永远不知道SSMS会给出什么错误.
此外,在触发器代码中的任何位置都没有调用回滚.
我正在尝试为使用.net 3.5程序集的sql 2005数据库创建一个clr存储过程
所以首先我必须改变sql 2005来识别system.core是不安全的我不太高兴(我宁愿让它说SAFE).
现在我收到了这个错误
Msg 6522, Level 16, State 1, Procedure StoredProcedure1, Line 0
A .NET Framework error occurred during execution of user defined routine or aggregate 'StoredProcedure1':
System.Security.HostProtectionException: Attempted to perform an operation that was forbidden by the CLR host.
The protected resources (only available with full trust) were: All
The demanded resources were: MayLeakOnAbort
System.Security.HostProtectionException:
at StoredProcedures.StoredProcedure1(String UtcDateTime)
Run Code Online (Sandbox Code Playgroud)
这是我的代码
Exec StoredProcedure1 '7/8/2010 5:00:00 am'
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
public partial …Run Code Online (Sandbox Code Playgroud) 如何在SQLCLR中使用C#编写存储过程?
目前我正在使用SQL Server Management Studio,我使用T-SQL编写存储过程,如create proc sp_item as .....
我想有一个SQL Server函数dbo.GetNextNumber(),它将为每个调用生成序列号.据我所知,使用本机T-SQL函数是不可能的,因为SQL Server坚持认为函数必须是确定性的.但是,如果你能告诉我一个原生的T-SQL函数,这将真正成为我的一天.
我想也许可以使用CLR函数编写.由于CLR函数是静态的,序列号需要存储在set操作的调用上下文中,因为将其存储为静态变量将导致使用相同序列的多个连接,从而导致不那么顺序的数字.我对嵌入式CLR知之甚少,看看是否可以从CLR端访问set操作(select,update,delete,insert)调用上下文.
在一天结束时,以下查询
select dbo.GetNextNumber() from sysobjects
Run Code Online (Sandbox Code Playgroud)
必须返回结果
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
如果需要另一个函数调用来重置上下文就好了
exec dbo.ResetSequenceNumbers()
Run Code Online (Sandbox Code Playgroud)
为了防止一些误解并减少浪费时间回答错误问题的机会,请注意我不是在寻找一个表的ID生成函数,而且我知道一些hacks(虽然使用proc而不是函数)涉及到一些带有标识列的临时表.该ROW_NUMBER()功能是接近,但它也不会削减.
非常感谢任何回复
凯末尔
PS令人惊讶的是,SQL Server确实具有内置功能.一个函数(假设它不能在连接和where子句中使用)非常容易实现并且非常有用,但由于某种原因它不包括在内.
我是新来的,英语不是我的母语,所以我希望你们能理解我.
有人能给我一个例子,说明如何创建一个函数来创建一个包含嵌套循环结果数据的表.
我正在尝试在C#中执行SQL CLR功能,以创建一个包含彩票游戏所有组合的表格,我有以下pascal代码:
program lotery;
uses fdelay, crt;
var
x,y,z,a,b,c:integer;
cont:longint;
begin
clrscr;
x:=0;
y:=0;
z:=0;
a:=0;
b:=0;
c:=0;
cont:=0;
for x:=0 to 59 do
begin
for y:=x+1 to 59 do
begin
for z:=y+1 to 59 do
begin
for a:=z+1 to 59 do
begin
for b:=a+1 to 59 do
begin
for c:=b+1 to 59 do
begin
cont:=cont+1;
Writeln ('Dezenas: ',x,' - ',y,' - ',z,' - ',a,' - ',b,' - ',c,' = Total de Dezenas: ',cont);
end;
end;
end;
end; …Run Code Online (Sandbox Code Playgroud) 我想在SQL Server 2008中使用CLR表值函数,它从内部访问数据库.我有一个许可例外.我试图以与创建它的用户相同的方式执行功能.所以问题的原因尚不清楚..
这是功能:
public partial class MyClass
{
[SqlFunction(
DataAccess = DataAccessKind.Read,
FillRowMethodName = "Availability_FillRow",
TableDefinition = "B0RID nchar(32)")]
public static IEnumerable Fn_SEARCH_Availability(SqlDateTime checkin, SqlInt32 overnights)
{
if (checkin.IsNull || overnights.IsNull)
{
return null;
}
List<ResultRoom> roomsResultList = new List<ResultRoom>();
using (SqlConnection conn = new SqlConnection("Data Source=MachineName;Initial Catalog=DBNANE;Integrated Security=True"))
{
conn.Open();
}
return roomsResultList;
}
}
Run Code Online (Sandbox Code Playgroud)
这是例外
A .NET Framework error occurred during execution of user-defined routine or aggregate "Fn_SEARCH_Availability":
System.Security.SecurityException: Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, …Run Code Online (Sandbox Code Playgroud) 我有一个asp.net mvc应用程序需要一段时间才能在我的生产服务器上加载.我想编写一个脚本来每隔10分钟调用一次页面,以避免页面在服务器上被废弃,这会导致服务器重新加载它们.
我正在考虑使用SQL Server存储过程每10分钟调用一次页面以保持页面处于活动状态.
我已经读过我可以使用CLR做到这一点,但我不知道如何做.有没有人有一个如何使用CLR在SQL存储过程中调用网页的示例?
我正在尝试在Visual Studio 2012 RTM中调试基于CLR的StoredProcedure.我有一个Sql数据库项目.当我尝试使用RightClick调试我的脚本文件 - >使用调试器执行时,会弹出关于附加进程的有害性的警告,当我接受它时,只需说:
无法调试.Net代码.无法附加到"Devserver"上的SQL Server进程.
我做了很多不同的事情:
我已将我的域用户添加到sysadmin SQL Server角色.
我在远程服务器上运行MSVSMON.EXE并设置它的权限.
我在"属性"窗格中配置了Visual Studio Project的ConnectionString.
我已将当前域用户添加到远程服务器的本地管理员.
在Visual Studio中的Sql Server对象资源管理器中,我选择了当前连接并勾选了"允许SQL\CLR调试"
...
但它仍然表示它无法附加进程,并且没有可以调试的源代码.
你有什么主意吗 ?我忘记了什么?
提前致谢
我想知道什么时候需要在SQL Server中使用CLR功能.
有人说CLR主要用于完成T-SQL无法完成的任务.但我无法弄清楚T-SQL的一个很好的例子未能给我我的确切输出.
有人可以给我一个通过T-SQL无法实现的确切示例吗?
样品将非常感谢!
我正在SQL Server中练习CLR函数:C#=> dll =>程序集=> CLR函数
我有一个可以很好地用作控制台应用程序的解决方案,但是执行“生成解决方案”后,没有按预期在.. \ MyProj \ MyProj \ obj \ Debug \中找到dll文件。在其他解决方案中,我确实找到了它,并且效果很好。我想我错过了解决方案的定义或属性。
您能指导我做什么/更改/查找/检查吗?