标签: c#

为其他数据库中的内部存储过程设置中央 CLR 存储过程/函数存储库库以使用?

我想使用我在 C# CLR 中开发的代码在系统上的所有数据库中使用,这样我就不必将每个数据库都设置为可信赖的并打开 CLR 并在每个数据库中保留一堆相同的代码.

从管理和安全的角度来看,有没有最好的方法来做到这一点?CLR 函数非常基础,如字符串断路器、电子邮件验证、url 编码/解码、base64 等。我希望每个数据库中只有 dbo 模式能够访问这些函数。

  1. 有没有简单的方法可以做到这一点?
  2. 我也不清楚是否嵌入了 CLR dll,如果我移动数据库,它会标记,或者我是否也必须移动 dll。

谢谢

sql-server-2008 sql-server sql-server-2008-r2 c# sql-clr

18
推荐指数
2
解决办法
1082
查看次数

如何保证 SQL Server 2008 R2 的插入首先缓存在 RAM 中?

想象一下“突发”的数据流,即它可能有 10,000 个事件非常快地到达,然后一分钟内什么也没有。

在此处输入图片说明

您的专家建议:我如何为 SQL Server 编写 C# 插入代码,以保证 SQL 立即将所有内容缓存在其自己的 RAM 中,而不会阻塞我的应用程序超过将数据输入到所述 RAM 所需的时间?为了实现这一点,您是否知道设置 SQL 服务器本身的任何模式,或者设置我正在写入的单个 SQL 表的模式?

当然,我可以做我自己的版本,这涉及在 RAM 中构建我自己的队列 - 但我不想重新发明旧石器时代的石斧,可以这么说。

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

17
推荐指数
2
解决办法
655
查看次数

我们是否需要在 C# 代码和存储过程中处理事务

我们真的需要 C# 中的事务处理以及双方的数据库存储过程吗?

C#:

Using(transaction with transaction scope)
{
     Execute stored proc;
     Transaction. Complete;
}
Run Code Online (Sandbox Code Playgroud)

SQL存储过程:

Create process
As
Begin try
    Begin transaction
    Commit
End try
Begin catch
    Rollback
End catch
Run Code Online (Sandbox Code Playgroud)

sql-server ado.net t-sql transaction c#

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

SQL Server CLR 中的第 3 方 dll

我需要在 SQL Server CLR 的触发器 c# 代码中使用第三方 DLL

但是当我尝试添加引用时,它只显示来自 SQL Server 的一些 DLL。

如何将我的第三方 dll添加到 SQL Server?

sql-server c# sql-clr

14
推荐指数
2
解决办法
2万
查看次数

如果某些数据少于 4000 个字符,nvarchar(max) 如何在数据库中存储数据会很快吗?

我必须开发一个 CMS,它将支持两种语言英语,阿拉伯语。这个 CMS 将是一种文章发布站点。在设计和分析时,我发现有些文章的长度超过 8000 个字符。我的表有一些列

PageID int,
PageTitleEnglish nvarchar(200),
PageTitleArabic nvarchar(200),
PageDescEnglish nvarchar(500),
PageDescArabic nvarchar(500),
PageBodyEnglish nvarchar(max)
PageBodyArabic nvarchar(max)
Run Code Online (Sandbox Code Playgroud)

如果我将 PageBody 保留为nvarchar(4000),那么我限制为 4000 个字符,如果我必须存储阿拉伯语版本,那么我需要 16000 个字节(因为阿拉伯语是 Unicode,比 ASCII 多 3 倍的空间)。

所以我只剩下将PageBody定义为 nVarchar(max) 的选项,从性能的角度来看,这将是不利的。我的实际问题是,如果 PageBody 列中的某些数据少于 4000 个字符,MS SQL Store 会比内联列中的数据或单独在数据库中的数据存储。

我也在谷歌上寻找过这个,但没有找到任何相关的答案以及在这种情况下我如何提高性能。

欢迎对这种多语言 CMS 设计的最佳实践提出任何建议。

我只需要支持两种语言阿拉伯语和英语

sql-server-2008 c#

8
推荐指数
2
解决办法
3229
查看次数

将文本列中的 RTF 批量转换为纯文本

我有一个旧系统,表中有大约 1000 万行。在该表中有一个 type 列text,其中大部分是标准文本,但大约 50 万行中有 RTF 标记。我需要将 RTF 格式的文本转换为纯文本。

我当前的方法是我有一个 C# 程序,它使用 a 将查询加载到 DataTable 中,SqlDataAdapter并使用 winformsRichTextBox控件进行转换。

void bw_DoWork(object sender, DoWorkEventArgs e)
{
    count = 0;

    rtbRTFToPlain = new RichTextBox();

    using (SqlDataAdapter ada = new SqlDataAdapter("select note_guid, notes from client_notes", Globals.SQLConnectionString))
    using(SqlCommandBuilder cmb = new SqlCommandBuilder(ada))
    {
        DataTable dt = new DataTable();
        ada.UpdateCommand = cmb.GetUpdateCommand();

        ada.Fill(dt);

        int reportEvery = dt.Rows.Count / 100;
        if (reportEvery == 0)
            reportEvery = 1;
        foreach (DataRow row …
Run Code Online (Sandbox Code Playgroud)

sql-server-2005 sql-server c#

8
推荐指数
1
解决办法
3万
查看次数

如何在短时间内向数据库中插入大量记录?

我必须使用最快的方式一次将一堆记录(500,000)插入到数据库中。我试过一次插入1,700条记录,但花了 20 分钟!!我正在使用SQL-SERVER, 和C#.

尽管下表不会对快速插入技术做出贡献,但我还是决定将其链接起来,以便您更好地了解我需要插入的字段数量(将其复制大约500K)。

田野

sql-server c#

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

使用 Windows 身份验证登录到 SQL Server

我有一个(.Net 控制台应用程序)EXE,它使用带有适当凭据的 SQL 服务器身份验证连接到各种 SQL 数据库。现在需要在 EXE 中进行更改才能使用 Windows 身份验证并使用网络凭据登录 SQL 服务器。(所有 SQL 服务器都在不同的位置)我有网络凭据,但我很困惑如何使用这些连接到远程 SQL 服务器并从中检索数据。请帮忙。

sql-server-2008 c#

7
推荐指数
2
解决办法
9万
查看次数

什么服务器属性使 TransactionScope 升级到 MSDTC?

在我们的应用程序中,我们使用的是 TransactionScope。我们的目标是不使用 MSDTC 服务,因为它比轻量级事务慢很多。

using (var transactionScope = new TransactionScope())
{
  ...
  transactionScope.Complete();
}
Run Code Online (Sandbox Code Playgroud)

当连接到测试数据库时,我们不需要 MSDTC,但在同一台机器上执行的完全相同的代码在连接到生产或开发数据库时升级为使用 MSDTC。

开发数据库不是集群的,也不是命名实例。

所有都是 SQL Server 2008 (10.50.2500) 并且连接字符串完全相同,除了主机名。

数据库的设置似乎必须有所不同。关于这可能是什么的任何想法?

编辑

该事务用于保护两个不同表中的插入。我注意到还有两个调用导致了两个选择。这些不需要在交易中,所以我将它们移到了它之外。然后,所有三个数据库中都不再需要 MSDTC。问题解决了,但不知道是什么原因造成的。

sql-server sql-server-2008-r2 transaction c#

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

在 T-SQL 中遇到“THROW”后,CLR 能否继续执行?

我正在从 CLR 存储过程调用 T-SQL 存储过程。并且THROWT-SQL 中的语句在不进入catch块的情况下停止 CLR 的执行。是否可以在我的代码中更改某些内容以导致 CLR 过程执行该catch块?

T-SQL:

CREATE TABLE t1 (ID INT PRIMARY KEY clustered);
CREATE TABLE t2 (ID INT CONSTRAINT fk_1 FOREIGN KEY REFERENCES t1(ID))
GO

CREATE PROC dbo.TestThrow 
AS
BEGIN
BEGIN TRY
    INSERT INTO t2 VALUES (1)
END TRY
BEGIN CATCH
    THROW 
END CATCH
END
GO
Run Code Online (Sandbox Code Playgroud)

克莱尔:

    public static void TestThrow()
    {
        String query = "EXEC DBO.TESTTHROW";
        using (SqlConnection connection = new SqlConnection("context connection=true"))
        {
            connection.Open();
            try
            { …
Run Code Online (Sandbox Code Playgroud)

sql-server c# sql-clr

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