标签: sql-server-2014

SQL Server 唯一键约束日期/时间跨度

如何为下表设置唯一键约束,以确保日期/开始时间和日期/结束时间之间的日期/时间跨度不与其他记录重叠?如果我需要添加计算列,什么数据类型和计算?

Column Name   Data Type
Date          date
BeginTime     time(7)
EndTime       time(7)
Run Code Online (Sandbox Code Playgroud)

谢谢。

sql-server sql-server-2014

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

所有(用户定义的标量)函数及其依赖项的列表

我正在尝试选择数据库中所有函数及其依赖项的列表。

(如果我手动查看依赖项并选择“依赖于[功能]的对象”选项,则会出现依赖项。)

我的主要问题是将所有依赖项汇总到每个函数的一行中。

我尝试过使用stuff,但由于某种原因我无法让它在这种情况下工作。

select 
    o.name
    , stuff((select N', ' + Name from sys.objects o3 where o3.object_id = o2.object_id for xml path ('')), 1, 1, N'') as Dependencies
from sys.objects o
    left join sys.sql_expression_dependencies sed
    on object_id = referenced_id
    left join sys.objects o2
    on referencing_id = o2.object_id
where o.type='FN' 
order by o.name
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

sql t-sql sql-server ssms sql-server-2014

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

在 SQL Server 2014 Developer 中生成 20 亿行的有效方法

长话短说; 我正在测试一个通过网络连接从表中清除条目的系统,预计该功能最多可处理超过 20 亿个条目。

我需要对此进行压力测试才能确定。

这是我的测试脚本(最多可以在十分钟内生成 980 万个。)

DECLARE @I INT=0

WHILE @I <2000000001
BEGIN
    INSERT INTO "Table here"
    VALUES(@I)  

    SET @I=@I+1
END
Run Code Online (Sandbox Code Playgroud)

任何人都可以提出任何建议,或者让我了解在这种情况下我的测试环境的上限可能是什么?

analytics stress-testing sql-server-2014

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

转换时转义 XML 特殊字符

我有可以满足我需要的csv分割器。

您可以按原样获取并运行它:

declare @t table(data varchar(max))
insert into @t select 'a,b,c,d'
insert into @t select 'e,,,h'

;with cte(xm) as 
(
    select convert(xml,'<f><e>' + replace(data,',', '</e><e>') + '</e></f>') as xm 
    from @t
)
select
    xm.value('/f[1]/e[1]','varchar(32)'),
    xm.value('/f[1]/e[2]','varchar(32)'),
    xm.value('/f[1]/e[3]','varchar(32)'),
    xm.value('/f[1]/e[4]','varchar(32)')
from cte
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,如果我在data中引入 XML 敏感字符,例如&

insert into @t select 'i,j,&,k'
Run Code Online (Sandbox Code Playgroud)

它失败并出现错误:字符 24,非法字符

一种解决方案是将&字符即时替换为& ,如下所示:

select convert(xml,'<f><e>' + replace(replace(data,'&','&amp'),',', '</e><e>') + '</e></f>') as xm 
Run Code Online (Sandbox Code Playgroud)

但是有几十个特殊的 XML 字符我需要在转换时转义,而且我不能真正在其中嵌套几十个 Replace (replace(replace(...函数)。这就是我所做的,而且很混乱。

如何修改上面的代码以转义 XML 敏感字符并产生相同的结果?

谢谢!

xml sql t-sql csv sql-server-2014

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

如何查看哪个表占用了多少存储空间?

如何查看 Microsoft SQL Server 2014 中哪个表占用了多少存储空间?

database sql-server sql-server-2014

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

在 SQL Server 中评估“value1 与 value2 不不同”的最佳方法

SQL Server 是否有与 Ansi SQL 运算符等效的运算符:IS DISTINCT FROM/IS NOT DISTINCT FROM?

我知道我可以替换:

value1 is not distinct from value2
Run Code Online (Sandbox Code Playgroud)

和 :

(value1 = value2) or (value1 is null and value2 is null)
Run Code Online (Sandbox Code Playgroud)

或者 :

coalesce(value1, -1) = coalesce(value2, -1)
Run Code Online (Sandbox Code Playgroud)

但是这些选项会阻止引擎使用索引,那么SQL Server是否有特定的运算符来检查这种比较?

谢谢。

sql sql-server where-clause sql-server-2014 sql-null

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

从表中获取以逗号分隔的一组值,其中另一个表上的另一个参考值出现两次(或多次)

假设 SQL Server 2014 中的数据库设置如下:

DECLARE @MATERIAL TABLE (ID int, CODE varchar(30));

INSERT @MATERIAL (ID, CODE) VALUES
(1, 'D3033MBBY'),
(2, 'D3033MBTY'),
(3, '011130-01'),
(4, '011130-04C'),
(5, '021002'),
(6, '021017-B'),
(7, '021134-01'),
(8, '021135-01'),
(9, '021955-01'),
(10, '3LS91101-550'),
(11, 'D3049MBRB'),
(12, 'EF0118'),
(13, 'FV8130'),
(14, 'FY7009'),
(15, 'H05802'),
(16, 'D3033MRTE');

DECLARE @SUBSTITUTE TABLE (ID int, ITEID int, SUBSTITUTECODE varchar(100));

INSERT @SUBSTITUTE (ID, ITEID, SUBSTITUTECODE) VALUES
(5232, 1, '191045762418'),
(5442, 2, '191045762418'),
(6435, 3, '5206432380030'),
(6573, 4, '5206432380030'),
(6582, 5, '5206432357131'),
(6683, …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-server-2014

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

是否有用于sys.tables和sys.procedures的C#API?

在我开始运行并从头开始编写自己的版本之前,是否有API可以将SQL Server中的系统视图(例如sys.tables和sys.procedures)公开给C#?

c# sql-server sql-server-2014

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

如何将数据插入sql server数据库

我正在尝试将数据插入我的SQL Server 2014数据库,但是我收到了一个错误

')'附近的语法不正确.

我的表格与我输入的数据类型相匹配,例如,我将其int放入int.

这是我的代码:

string ip = Request.UserHostAddress;
string name = "Jesus said: Love your Enemies (V.S.)";

int blueq = Convert.ToInt32(TextBox1.Text);
int redq = Convert.ToInt32(TextBox2.Text);
int whiteq = Convert.ToInt32(TextBox3.Text);
int blackq = Convert.ToInt32(TextBox4.Text);
int whiteqr = Convert.ToInt32(TextBox9.Text);
int redqr = Convert.ToInt32(TextBox10.Text);
int sn = 600;
int price = total_jslye;

string size; 

if (RadioButton1.Checked == false)
{
    size = "11x35";
}
else
    size = "18x50";

try
{
    string conn = System.Configuration.ConfigurationManager.ConnectionStrings["SQLCS"].ConnectionString;
    var cmd = "INSERT …
Run Code Online (Sandbox Code Playgroud)

c# sql sql-server asp.net sql-server-2014

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

SQL Where子句在传递值时使用

我有以下情况.

如果将值传递给@UserId参数,则需要过滤这些用户记录.

如果没有传递值,那么我需要带上所有记录.

列RecipientId不是NULL.

但是,即使我传递了值,查询下面也会返回所有记录.

DECLARE @UserId INT

SET @UserId = 47

SELECT *
FROM Message MR
WHERE MR.CompanyId = 1
    AND (
        MR.RecipientId IS NOT NULL
        OR MR.RecipientId = @UserId
        )
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2014

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