小编mar*_*c_s的帖子

SQL Server 中未提交的 JDBC 读取

如果我将 jdbc 隔离级别设置为在 SQL Server 中读取未提交,SQL Server 会锁定任何表、页、行等吗?

谢谢。

sql-server locking

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

SQL Server xml 性能

我有一个 21 列的表。大多数是数字,其余的是nvarchar

我需要添加 4 列,这些列将包含每行的 XML 数据。每行的 XML 数据可以是 200 到 2,000 行。

问题是:

  • 将 XML 类型的列添加到同一个表是否会改变查询该表的速度?

  • 当我将 xml 类型的列添加到另一个表并在执行查询时连接两个表时,有什么性能优势?

  • 对 XML 数据进行编码以缩小它并在应用程序中对其进行解码是否更好?

performance xml sql-server sql-server-2008-r2

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

如何处理更新或插入情况

有时我的存储过程看起来像

create procedure handle_data 
    @fk int,
    @value varchar(10)
as
begin
    if exists (select * from my_table where id = @fk)
    begin
        update my_table
        set value = @value
        where id = @fk
    end 
    else 
    begin
        insert into my_table (fk, value)
            select @fk, @value
    end 
end 
Run Code Online (Sandbox Code Playgroud)

调用此存储过程的应用程序设计可能存在错误。
我应该避免制作执行相同存储过程和方法来插入新数据并更新旧数据的应用程序吗?

有没有更好的方法来以一种方法实现更新或插入数据?

我正在使用 SQL Server 2005 / 2008。

sql-server-2008 database-design insert t-sql update

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

处理这么多 isnull() 情况的更简单方法

有没有什么好方法可以避免isnull()在存储过程中多次编写函数?

我有一个使用该isnull()函数近 30 次的存储过程,我认为我缺少一个概念,但是在找到更好的方法来获取我的数据之前,我会喜欢从这么多isnull()函数中清理我的代码。

我可以暂时将 SQL Server 2008 R2 设置为使用空值作为浮点 0 吗?isnull()如果没有数据,我的大部分内容只是添加零 0 值,以便我可以进行数学运算。

编辑:我不是懒惰,我只是想清理我的代码并避免选择部分看起来像这样

select  
   vrsta.NAZIV
   ,isnull(sum(prod.prod_mpci),0) as prod_MPCI
   ,isnull(sum(isnull(mal_MPCI,0) + (vel_kol * isnull(mal_MPC,vel_VPC))),0) as lager_mpci
   ,isnull(sum(vel_NCI),0)+isnulL(sum(mal_NCI),0) as lager_nci
   ,sum(   case 
            when isnull(vel_KOL,0)+isnull(mal_KOL,0) > isnull(prod.prod_kol,0) and isnull(dzn.dzn,'2010-01-01') < @dzu
                    then ((isnull(vel_KOL,0)+isnull(mal_KOL,0))-isnull(prod.prod_kol,0)) * isnull(mal_MPC,vel_VPC)
                    else 0 end
            ) as visak_MPC
   ,sum(   case 
            when isnull(vel_KOL,0)+isnull(mal_KOL,0) > isnull(prod.prod_kol,0) and isnull(dzn.dzn,'2010-01-01') < @dzu
                    then ((isnull(vel_KOL,0)+isnull(mal_KOL,0))-isnull(prod.prod_kol,0)) * isnull(mal_NC,vel_NC)
                    else 0 end
            ) as visak_MPC
    ,sum(   case …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 null sql-server t-sql

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

将 SQL Server 数据库保存到文件中,然后在另一台服务器上以任何数据库名称打开它

在此处输入图片说明

我试图找到一种能够像使用 Access 那样物理保存和打开 SQL Server 数据库的有效方法。我希望能够将我的整个数据库保存到一个文件中并在其他服务器上打开它。我已经尝试过备份/恢复,但它们非常棘手,而且它并不总是有效。除了备份/恢复程序之外,还有其他方法吗?

以下是我尝试进行还原时得到的结果。我尝试了我能想到的所有可能的方法,但它根本无法恢复。

sql-server

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

SQL Server 2008 R2 中的偷偷回滚

是否可以在 SQL Server 2008 R2 中回滚一整套已提交的事务而无需任何通知或日志记录?

本周末,我们在 HA 集群 SQL Server 2008 R2 环境中显然回滚了一组数据。数据存在,现在不存在。SQL Server 错误日志中没有任何内容,群集日志中也没有任何内容。最初加载数据的 SQL Server 代理作业成功运行(包括从进程本身发送的进度电子邮件)。

唯一没有回滚的是批量插入的数据。数据库设置为完全恢复,因此批量插入的数据也应该回滚,对吗?

很抱歉缺乏细节,但我真的很难过。甚至想不出还有什么地方可以看。

sql-server sql-server-2008-r2 transaction-log

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

恢复使用中的 SQL Server 2000 数据库

我需要将 SQL Server 2000 数据库恢复到大约 2 天前的备份。我刚刚备份了它并试图恢复它,但它说它正在使用中。

找出谁仍在使用它,然后如何断开它们的最佳方法是什么?

我想使数据库离线是一种简单的方法,但可能不是最安全的方法?

backup sql-server-2000 restore

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

如何以更优雅的方式在 SQL Server Compact 中编写此查询?

查询是:

 Select  
        Case AStatus  
            When 1 then 'Success'
            When 0 then 'Faliure'
        END,
        Case AStatus  
            When 1 then 'AStatus'
            When 0 then 'AStatus'
        END,
        Case AStatus  
            When 1 then 'Expected:1'  
            When 0 then 'Recived: 0'  
        END
    From Statuses  
    Where LocalPath= 'c:\Status'
Run Code Online (Sandbox Code Playgroud)

在 SQL Server Compact 中运行不佳的原始查询(等于上述查询)是:

Select  
   Case AStatus  
      When 1 then 'Success', 'AStatus', 'Expected:1'  
      When 0 then 'Faliure', 'AStatus', 'Recived: 0'    
   end
From Statuses  
Where LocalPath= 'c:\Status
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server-compact

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

SQL Server 中的公制到标准单位转换

我给出了两个表格的简化版本,如下所示。

表记录

ID  unit  val
--- ---   ---
1   KV    3
1   BAR   4
2   KV    7
2   KG    5
3   C     37
Run Code Online (Sandbox Code Playgroud)

表单位

unit    convUnit    formula
---     ---         ---
KV      CV          @val * .865
KG      lbs         @val / 2.205
BAR     PSI         @val / 14.504
C       F           @val * 9/5 + 32
Run Code Online (Sandbox Code Playgroud)

我将无法更改表结构。

我知道哪个单位将转换为哪个单位(即我知道 KV 将转换为 CV,KG 将转换为磅等..)。

请注意,公式是一varchar列,我从表格tblRecords.unit中引用了tblUnit.unit

但我的问题是如何在单个查询中动态计算公式。即我想要以下输出。

ID  unit    val     convVal(column will be counted on the fly using formula stored in tblUnit.formula …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server t-sql

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

空的 SQL Server 2000 LDF 文件

我有一个 1 GB.LDF的测试数据库,我想将其缩小。如果需要,我很乐意删除其内容。

如何为 SQL Server 2000 执行此操作?

我尝试了以下方法但无济于事:

BACKUP LOG Database_TEST with truncate_only
DBCC SHRINKFILE (Database_TEST_Log, 1000)
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2000

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