标签: sqlclr

如何在 VS 2013 中调试 CLR 存储过程

我尝试了不同的方法来完成这项工作,但没有任何效果。当我运行测试脚本时,VS 似乎忽略了 .cs 文件中的所有断点。我也在测试脚本中包含了一个断点,但仍然没有调试。

这是我尝试过的Microsoft https://msdn.microsoft.com/en-us/library/ms165051(v=vs.100).aspx的指南,但我没有“设置为默认调试脚本”当我右键单击我的脚本文件时的选项。

c# sql-server debugging sqlclr visual-studio

2
推荐指数
1
解决办法
4491
查看次数

在 C# 中的 SQL CLR 函数中设置小数精度

我有一个用 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# 中更改输入参数的精度和小数位数?

c# sql-server sqlclr

2
推荐指数
1
解决办法
195
查看次数

CLR UDF返回Varbinary(MAX)

SQL CLR用户定义函数是否可以返回数据类型varbinary(MAX)?

在文档中提到:

"输入参数和从标量值函数返回的类型可以是SQL Server支持的任何标量数据类型,除了rowversion,text,ntext,image,timestamp,table或cursor." - 他们没有提到varbinary,但我不确定......

我有一些来自.NET端的字节数组数据,我需要从CLR返回到SQL Server,我试图避免必须使用存储过程的输出参数(这是我如何拥有它)现在在测试中工作).

谢谢!

sql-server sqlclr user-defined-functions

1
推荐指数
1
解决办法
5962
查看次数

删除触发器仅在删除后触发?

我认为"删除后"意味着在删除已经发生之前触发器才会被触发,但这是我的情况......

在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会给出什么错误.

此外,在触发器代码中的任何位置都没有调用回滚.

sql t-sql sql-server sqlclr sql-server-2008

1
推荐指数
1
解决办法
7380
查看次数

如何使这个CLR与2005年一起工作?

我正在尝试为使用.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)

c# sql clr sql-server-2005 sqlclr

1
推荐指数
1
解决办法
2065
查看次数

SQL CLR中的存储过程

如何在SQLCLR中使用C#编写存储过程?

目前我正在使用SQL Server Management Studio,我使用T-SQL编写存储过程,如create proc sp_item as .....

c# sql-server stored-procedures sql-server-2005 sqlclr

1
推荐指数
1
解决办法
5070
查看次数

用于生成序列号的SQL Server函数

我想有一个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子句中使用)非常容易实现并且非常有用,但由于某种原因它不包括在内.

sql-server sequences sqlclr clr-hosting

1
推荐指数
1
解决办法
7970
查看次数

有人举例说明如何在SQL Server 2008中插入CLR?

我是新来的,英语不是我的母语,所以我希望你们能理解我.

有人能给我一个例子,说明如何创建一个函数来创建一个包含嵌套循环结果数据的表.

我正在尝试在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)

c# sqlclr insert visual-studio-2010 sql-server-2008

1
推荐指数
1
解决办法
958
查看次数

SQL Server 2008:在尝试通过连接访问数据库的CLR函数时出现异常

我想在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)

sql-server clr sqlclr sql-server-2008

0
推荐指数
1
解决办法
1729
查看次数

如何使用SQL CLR方法调用网页?

我有一个asp.net mvc应用程序需要一段时间才能在我的生产服务器上加载.我想编写一个脚本来每隔10分钟调用一次页面,以避免页面在服务器上被废弃,这会导致服务器重新加载它们.

我正在考虑使用SQL Server存储过程每10分钟调用一次页面以保持页面处于活动状态.

我已经读过我可以使用CLR做到这一点,但我不知道如何做.有没有人有一个如何使用CLR在SQL存储过程中调用网页的示例?

sql asp.net sql-server-2005 sqlclr

0
推荐指数
1
解决办法
969
查看次数

无法调试.Net代码.无法附加到进程.SQL CLR远程调试

我正在尝试在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调试"

  • ...

但它仍然表示它无法附加进程,并且没有可以调试的源代码.

你有什么主意吗 ?我忘记了什么?

提前致谢

debugging stored-procedures remote-debugging sqlclr

0
推荐指数
1
解决办法
6912
查看次数

我们什么时候需要SQL Server中的CLR功能?

我想知道什么时候需要在SQL Server中使用CLR功能.

有人说CLR主要用于完成T-SQL无法完成的任务.但我无法弄清楚T-SQL的一个很好的例子未能给我我的确切输出.

有人可以给我一个通过T-SQL无法实现的确切示例吗?

样品将非常感谢!

sql sql-server sqlclr sql-server-2012

0
推荐指数
1
解决办法
3592
查看次数

建立解决方案时如何建立dll

我正在SQL Server中练习CLR函数:C#=> dll =>程序集=> CLR函数

我有一个可以很好地用作控制台应用程序的解决方案,但是执行“生成解决方案”后,没有按预期在.. \ MyProj \ MyProj \ obj \ Debug \中找到dll文件。在其他解决方案中,我确实找到了它,并且效果很好。我想我错过了解决方案的定义或属性。

您能指导我做什么/更改/查找/检查吗?

c# sql-server dll sqlclr visual-studio

0
推荐指数
1
解决办法
265
查看次数