小编ado*_*lot的帖子

表值参数作为存储过程的输出参数

是否可以将表值参数用作存储过程的输出参数?

这是,我想在代码中做什么

/*First I create MY type */
CREATE TYPE typ_test AS TABLE 
(
     id int not null
    ,name varchar(50) not null
    ,value varchar(50) not null
    PRIMARY KEY (id)
)
GO


--Now I want to create stored procedu whic is going to send output type I created, 
--But it looks like it is inpossible, at least in SQL2008
create  PROCEDURE [dbo].sp_test
         @od datetime 
        ,@do datetime 
        ,@poruka varchar(Max) output
        ,@iznos money output 
        ,@racun_stavke  dbo.typ_test   READONLY --Can I Change READONLY with OUTPUT …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 stored-procedures datatypes t-sql parameter

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

对于表的大量更改,有什么更好的方法:DELETE 和 INSERT 每次或 UPDATE 存在?

我正在做一个项目,我需要每天在一张表中更改大约 36K 条记录。我想知道什么会表现得更好:

  1. 删除行并插入新行,或
  2. 更新已经存在的行

对我来说,删除所有行并插入新行会更容易,但如果这会使表和索引碎片化并影响性能,那么我更愿意在可能的情况下进行更新并仅在必要时删除/插入。

这将是一项夜间服务,我不希望提高流程本身的速度。我更关心对这个表的查询性能,我已经有 8900 万条记录,以及这个每晚的过程将如何影响它。

对于这个夜间流程,我应该删除/插入记录还是应该更新现有记录(在可能的情况下)?

performance sql-server-2005 sql-server application-design fragmentation

30
推荐指数
4
解决办法
6万
查看次数

SQL Server Express Edition 是否支持 CLR 过程?

SQL Server Express Edition(2005 和 2008)是否支持安装、启用和运行 CLR 存储过程和函数。

sql-server-2005 sql-server-2008 sql-server sql-server-express sql-clr

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

如何对两列或更多列进行条件排序

在 MS SQL Server 2005 中,我正在编写一个带有条件排序的查询,我的问题是我不知道如何使用两列进行条件排序?

如果我写了这样的代码,它就可以正常工作

select
    *
from 
    table
order by 
    case @pkr 
           when 'kol' then kol
           when 'nci' then nci
    end
Run Code Online (Sandbox Code Playgroud)

我不知道如何对两列或更多列进行条件排序

select
    *
from 
    table
order by 
    case @pkr
        when 'KOL-NCI' then kol,nci
        when 'kol-MPCI' then kol,mpci
    end
Run Code Online (Sandbox Code Playgroud)

有一个制作动态 TSQL 并使用的想法,sp_executesql但我仍在寻找更好的想法?

sql-server order-by

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

帮我选择一个 SQL Server 2008 实例的 RAID 级别组合

我将从头开始重建一台 IBM 3400 服务器。此服务器专用于在 Windows 2008 R2 上运行的 SQL Server 2008 实例。

我将进行新的 RAID 配置。我在机器内部有 6 个 SCSI 73 GB 驱动器和一个 IBM ServerRAID 8K 控制器。什么是设置 RAID 级别的好方法?我的控制器上应该有两个、三个还是一个字段?

我正在考虑制定以下解决方案之一:

  1. 使用所有磁盘并制作 RAID 10 池。
  2. 将 4 个磁盘用于 RAID 1e 池并使用它来存储数据库数据和操作系统,并使用 RAID 0 池中的其他 2 个磁盘并使用它来存储数据库日志。
  3. 其他一些组合。

条带单元尺寸越大越好吗?

该服务器将成为复制数据库的订阅者。它的主要任务是报告和数据检索,只有复制代理进行写入。数据库的大小约为 90 GB。

performance sql-server best-practices disk-structures

11
推荐指数
2
解决办法
5742
查看次数

如何在 SQL Server 2012 中为 RAISERROR 函数在 varchar @params 中转义“%”

我应该如何转义%参数中的字符,以便我重新调整RAISERROR我的消息

declare @msg varchar(max)  = (SELECT ' Message with %  ' AS MSG)

if @msg is not null
begin
    RAISERROR (@msg ,16,1); 
end
Run Code Online (Sandbox Code Playgroud)

这将引发错误消息

消息 2787,级别 16,状态 1,第 4 行
无效的格式规范:“%”。

对于最终用户,此消息是不可读的。

我的消息是从数据库生成并设置此消息。

我避免收到错误消息的方法是替换

set @msg = REPLACE(@msg,'%','P')
Run Code Online (Sandbox Code Playgroud)

但是我还是不知道怎么加%符号

sql-server t-sql raiserror

11
推荐指数
2
解决办法
9771
查看次数

按 LIKE 的匹配排序

我想知道如何实现 SQL 以获得按类似谓词的最佳匹配排序的结果。我在数据库中有 10 万篇文章,当用户按名称的一部分调用某些项目时。我想显示按查询的最佳匹配排序的结果。

我会试着用伪代码来描述

select 
*
from
articles
where item_nale like '%'+@user_input +'%'
order by "BEST MATCH"
Run Code Online (Sandbox Code Playgroud)

sql-server order-by pattern-matching

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

SQL Server:如何创建只能从特定 HOSTNAME 或 IP 地址访问的用户

我有一个我依赖的愚蠢的应用程序,里面有硬编码的连接字符串。

为了提高我的 SQL Server 的安全性,我想让 SQL 用户与内部应用程序的硬编码相同,但我希望该用户只能从特定主机(IP 地址)使用 SQL Server。

security sql-server sql-server-2012

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

按月-年关键面值存储日期的最佳实践

我正在制作一项需要保存按年月组合分组和计算的数据的服务。我知道如何计算数据并将其放在新表上。但是我很困惑应该使用哪种数据类型来存储月 - 年值。这是我所考虑的。

  1. 两个整数列,一个为一年,另一个为一个月(清晰易懂且易于操作(使用此表的任何人都可以轻松使用范围和顺序),但我认为这比其他解决方案占用更多空间。
  2. 使用日期字段,并始终为整个月存储一个日期。(很难向用户解释它是如何工作的以及如何创建 WHERE 子句)
  3. 一个 varchar(7) 列并将其放在那里,例如 2012-02,2013-01。对我来说,这很容易理解,但很难操作。

我应该选哪个?或者有其他解决方案。有人可以根据性能建议哪种方式将是一个好的解决方案,因为大多数查询将在 where 解决方案中使用数据范围,而我的新表将有大约 2-5 百万条记录。

sql-server-2008 database-design datatypes date-format

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

@date 和 getdate() 之间的性能有区别吗?

通常我getdate()在我的 where 子句中使用函数来回到过去。就像是:

 DOC.DATUM >= DATEADD(DD,-1*SSN_SDO.DANA_ZA_POVRAT,GETDATE()) 
Run Code Online (Sandbox Code Playgroud)

如果我首先声明一个日期参数并在查询中使用它,SQL Server 2008R2 会执行更快的查询吗?

declare @dateNow date = getdate()
...
where
     DOC.DATUM >= DATEADD(DD,-1*SSN_SDO.DANA_ZA_POVRAT,@dateNow ) 
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008 sql-server query-performance

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