标签: sql-server-2005

通过网络还原数据库备份

如何通过网络使用SQL Server 2005还原数据库备份?我记得以前做过这个,但是你必须做的事情有点奇怪.

database sql-server backup sql-server-2005 restore

45
推荐指数
5
解决办法
7万
查看次数

SQL Server"AFTER INSERT"触发器看不到刚刚插入的行

考虑这个触发器:

ALTER TRIGGER myTrigger 
   ON someTable 
   AFTER INSERT
AS BEGIN
  DELETE FROM someTable
         WHERE ISNUMERIC(someField) = 1
END
Run Code Online (Sandbox Code Playgroud)

我有一张桌子,有桌子,我试图阻止人们插入不良记录.出于这个问题的目的,坏记录有一个字段"someField",它都是数字.

当然,正确的方法不是触发器,但我不控制源代码......只是SQL数据库.所以我无法阻止插入坏行,但我可以立即将其删除,这对我的需求来说已经足够了.

触发器有效,有一个问题......当它触发时,似乎永远不会删除刚刚插入的坏记录......它会删除任何旧的坏记录,但它不会删除刚刚插入的坏记录.所以通常会有一个糟糕的记录在没有删除,直到其他人出现并执行另一次INSERT.

这是我对触发器的理解中的问题吗?触发器运行时是否尚未提交新插入的行?

sql-server triggers sql-server-2005

45
推荐指数
5
解决办法
19万
查看次数

我可以在SQL Server数据库中保存"对象"吗?

我想将对象(任何类型)保存到SQL Server 2005中的数据库中的字段中.是否可能?我是否必须将对象转换为某些内容,例如字节数组,并在检索时将其转换回来?

c# sql-server ado.net sql-server-2005

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

Microsoft SQL 2005中的自然(人类字母数字)排序

我们有一个大型数据库,我们有数据库端分页.这很快,在几分之一秒内从数百万条记录中返回50行的页面.

用户可以定义自己的排序,基本上选择要排序的列.列是动态的 - 一些具有数值,一些日期和一些文本.

虽然大多数按预期文本排序是愚蠢的.嗯,我说愚蠢,它对计算机有意义,但让用户感到沮丧.

例如,按字符串记录ID排序会产生如下内容:

rec1
rec10
rec14
rec2
rec20
rec3
rec4
Run Code Online (Sandbox Code Playgroud)

...等等.

我希望这个考虑到这个数字,所以:

rec1
rec2
rec3
rec4
rec10
rec14
rec20
Run Code Online (Sandbox Code Playgroud)

我无法控制输入(否则我只是在前导000中格式化)而且我不能依赖单一格式 - 有些类似于"{alpha code} - {dept code} - {rec id}".

我知道在C#中有几种方法可以做到这一点,但是不能拉下所有记录来对它们进行排序,因为这样会慢.

有谁知道在Sql server中快速应用自然排序的方法?


我们正在使用:

ROW_NUMBER() over (order by {field name} asc)
Run Code Online (Sandbox Code Playgroud)

然后我们就这样分页.

我们可以添加触发器,但我们不会.他们所有的输入都是参数化的,但是我无法改变格式 - 如果他们输入"rec2"和"rec10",他们希望它们就像那样,以自然的顺序返回.


我们有有效的用户输入,遵循不同客户的不同格式.

有人可能会去rec1,rec2,rec3,... rec100,rec101

而另一个可能会去:grp1rec1,grp1rec2,... grp20rec300,grp20rec301

当我说我们无法控制输入时,我的意思是我们不能强迫用户更改这些标准 - 它们有一个像grp1rec1的值,我不能将其重新格式化为grp01rec001,因为这会改变用于查找的内容和链接到外部系统.

这些格式变化很大,但通常是字母和数字的混合.

在C#中对它们进行排序很容易 - 只需将其分解{ "grp", 20, "rec", 301 },然后依次比较序列值.

但是,可能有数百万条记录并且数据被分页,我需要在SQL服务器上进行排序.

SQL服务器按值排序,而不是比较 - 在​​C#中我可以将值拆分为比较,但在SQL中我需要一些逻辑(非常快)获得一致排序的单个值.

@moebius - 你的答案可能会有效,但是为所有这些文本值添加排序键确实感觉像是一个丑陋的妥协.

sql-server sorting sql-server-2005 natural-sort

44
推荐指数
6
解决办法
3万
查看次数

SQL Server 2005将变量设置为选择查询的结果

如何在不使用存储过程的情况下将变量设置为select查询的结果?


我想做类似的事情:OOdate DATETIME

SET OOdate = Select OO.Date 
FROM OLAP.OutageHours as OO
WHERE OO.OutageID = 1
Run Code Online (Sandbox Code Playgroud)

然后我想在此查询中使用OOdate:

SELECT COUNT(FF.HALID) from Outages.FaultsInOutages as OFIO
INNER join Faults.Faults as FF ON FF.HALID = OFIO.HALID
WHERE CONVERT(VARCHAR(10),OO.Date,126) = CONVERT(VARCHAR(10),FF.FaultDate,126)) 
AND
OFIO.OutageID = 1
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2005

44
推荐指数
3
解决办法
17万
查看次数

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

SQL Server:如何在自引用表中获取父ID的所有子记录

嗨,我有一个引用自己的表,我需要能够从给定的父ID中选择父级及其所有子记录.

我的表格如下:

ID   | ParentID | Name         
-----------------------              
1      NULL       A
2      1          B-1
3      1          B-2
4      2          C-1
5      2          C-2
Run Code Online (Sandbox Code Playgroud)

因此,对于上面的示例,我希望能够传入值1并获取上面的所有记录.

到目前为止,我已经提出了以下递归表值函数,但它没有按预期运行(只返回第一条记录).

CREATE FUNCTION [dbo].[SelectBranches]
(   
    @id INT
    ,@parentId INT
)
RETURNS @branchTable TABLE
(
    ID INT
    ,ParentID INT
    ,Name INT
)
AS
BEGIN 

    IF @branchId IS NOT NULL BEGIN

        INSERT INTO @branchTable
        SELECT 
            ID
            ,ParentID
            ,Name
        FROM
            tblLinkAdvertiserCity
        WHERE
            ID = @id

    END

    INSERT INTO @branchTable
    SELECT
        br.ID
        ,br.ParentID
        ,br.Name
    FROM
        @branchTable b
    CROSS APPLY
        dbo.SelectBranches(NULL, …
Run Code Online (Sandbox Code Playgroud)

sql recursion sql-server-2005 hierarchy

44
推荐指数
1
解决办法
5万
查看次数

如何获取事务插入的行数

我必须管理一个日志,我必须看到事务插入的行数.有没有办法动态地做到这一点?

sql-server sql-server-2005

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

更新1.2亿条记录的最快方式

我需要在一个1.2亿记录表中初始化一个值为-1的新字段.

Update table
       set int_field = -1;
Run Code Online (Sandbox Code Playgroud)

我让它运行了5个小时才取消它.

我尝试运行它,事务级别设置为读取未提交的相同结果.

Recovery Model = Simple.
MS SQL Server 2005
Run Code Online (Sandbox Code Playgroud)

如何更快地完成这项工作?

sql sql-server sql-server-2005

44
推荐指数
3
解决办法
12万
查看次数

整数SQL Server T-SQL中的最大值常量?

在T-SQL中是否有任何常量,例如在其他一些语言中提供数据类型的最大值和最小值范围,例如int?

我有一个代码表,其中每一行都有一个上下范围列,我需要一个表示一个范围的条目,其中上限是int可以容纳的最大值(有点像一个hackish无穷大).我宁愿不对它进行硬编码,而是使用类似的东西SET UpperRange = int.Max

sql t-sql sql-server sql-server-2005

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