标签: sql-server

过程是删除数据而不是插入

我有一个程序如下:

create procedure MoveDailyData
    @date1 bigint
    as
    declare @datenow bigint
    set @datenow = datediff(S,'01/01/1970',getdate())
    if ((@datenow)-@date1)>=86400
    begin
     insert into FinalLogs(problem,channel_number,username,app_id,Is_On,logtype,viewing_channel,playtime,macaddress,wifimacaddress,seen,version,date) 
     select problem,channel_number,username,app_id,Is_On,logtype,viewing_channel,playtime,macaddress, wifimacaddress,seen,version,date from DayTempTable
     delete from DayTempTable where (@datenow-@date1)>=86400
     end
     else select 'Not Yet';
Run Code Online (Sandbox Code Playgroud)

该过程应将数据从 1 个临时表复制到最后一个(按每日计划),然后从临时表中删除该数据。相反,我注意到每隔几天,数据不会被复制,而只是从临时表中删除,因此我丢失了大量相关数据。该date列是一个bigint(日期另存为unix time)。在这个过程中我做错了什么吗?

sql-server stored-procedures

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

分配单元 ID 计算不正确?

我正在阅读关于如何根据 m_indexId 计算分配单元 ID的文章http://www.sqlskills.com/blogs/paul/inside-the-storage-engine-how-are-allocation-unit-ids-calculated/和 m_objID。然后我通过执行以下命令在我的数据库之一上尝试:

    DBCC TRACEON(3604);
    DBCC PAGE (UFDATA_008_2013, 1, 73057, 3);
    GO
Run Code Online (Sandbox Code Playgroud)

输出结果是:

    PAGE HEADER:


    Page @0x10008000

    m_pageId = (1:73057)                 m_headerVersion = 1                  m_type = 1
    m_typeFlagBits = 0x0                 m_level = 0                          m_flagBits = 0x8000
    m_objId (AllocUnitId.idObj) = 1913890731                                  m_indexId (AllocUnitId.idInd) = 0
    Metadata: AllocUnitId = 406903719657472                                   Metadata: PartitionId = 406903719657472
    Metadata: IndexId = 1                Metadata: ObjectId = 1913890731      m_prevPage = (1:92774)
    m_nextPage = (0:0)                   pminlen = 11                         m_slotCnt = 61
    m_freeCnt = 3241                     m_freeData = …
Run Code Online (Sandbox Code Playgroud)

sql-server database-internals

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

使用 Distinct 和 Sum?

我想使用 case 语句总结一些值。我的问题是编译器会抱怨,如果我没有在查询的末尾添加一个组,这会否定我的 Distinct,哈哈。例如,在我下面的示例中,red12即使 1 个条目不符合上述任何条件,这也会返回 2 个条目,但这让Group By我感到困惑!我怎样才能运行这个查询并只返回适用的结果,即case statements显示什么?

Create Table #Bobsled
(
  [event] varchar(100)
  ,[time] decimal(18,4)
  ,employeeID varchar(25)
  ,name varchar(500)
)

Insert Into #Bobsled Values
('Walk', '16.32','red12', 'red arrow')
,('Eat', '5.12', 'red12', 'red arrow')
,('Run', '32.13','pink01', 'pink pig')
,('Walk', '2.12', 'bl81', 'blue fire')
,('Sleep', '8.12', 'gr99', 'green pony')


Select Distinct
employeeid
,case when [event] = 'Walk' then SUM([time]) else 0 end as walktime
,case when [event] = 'RUN' then SUM([time]) else 0 …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2008-r2

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

N'[未分类(本地)] 是什么意思?

在这里(和其他地方)的几个问答代码片段中可以看到以下代码,我正在尝试翻译部分N'[Uncategorized (Local)]

    EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', 
       @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
Run Code Online (Sandbox Code Playgroud)

例子

我看过 Microsoft EXECUTE (Transact-SQL)

'姓名'

是有效的用户名或登录名。name 必须是 sysadmin 固定服务器角色的成员,或者分别作为 sys.database_principals 或 sys.server_principals 中的主体存在。name 不能是内置帐户,例如 NT AUTHORITY\LocalService、NT AUTHORITY\NetworkService 或 NT AUTHORITY\LocalSystem。

[N] 'command_string'

是一个常量字符串,其中包含要传递到链接服务器的命令。如果包含 N,则字符串被解释为 nvarchar 数据类型。

我猜N'[Uncategorized (Local)] 部分会获取系统管理员的名称并将其传递给系统管理员以执行作业,但我没有找到一个很好的参考资料来表明所有三个部分是如何协同工作的.

sql-server sql-server-agent

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

仅授予对系统数据库的访问权限

是否可以授予类似 SA 的权限减去对用户数据库的任何访问权限?我希望人们能够从系统数据库中收集有关 Sql Server 的信息,但我想确保无法触及用户数据库。解决这个问题的最佳方法是什么?

sql-server permissions

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

为什么 SQL Server 要求非聚集索引使用唯一键?

根据/sf/ask/303308771/

答案是肯定的。从某种意义上说,SQL Server 将通过将 4 字节附加到键来使其独一无二。鉴于聚集索引用于数据寻址目的(正确?),这是有道理的。

根据我的研究,似乎 SQL Server 也要求非聚集索引也是唯一的。当使用非唯一列时,SQL Server 会附加一个 4 字节的“uniquefier”值以使其唯一。那是对的吗?

为什么 SQL Server 要求非聚集索引使用唯一键?

sql-server clustered-index

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

比较先前记录的值

如何比较以前记录的值?

桌子:

ID    SAMPLEDATE    LEVEL    PASSED
1     1/1/2016      0        1
2     1/2/2016      1        1
3     1/3/2016      2        0
4     1/4/2016      1        1
5     1/5/2016      2        0
Run Code Online (Sandbox Code Playgroud)

最后一条记录(由 排序SAMPLEDATE)是否与最后LEVEL一条失败的记录相同?如果是,则返回 TRUE,否则返回 FALSE。

因此,在我的示例数据中,最后一条记录失败并显示为LEVEL2。然后在 2016 年 1 月 3 日失败的最后一条记录(在 2016 年 1 月 5 日之前)是相同的 LEVEL,因此将返回 TRUE。如果是不同的 LEVEL FALSE 将被返回。

sql-server sql-server-2014

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

什么是 SQL Server 中的表面积

SQL Server 中的表面积是多少?或者 SQL Server 中的表面积由什么组成?

Oracle 有类似的概念吗?如果是,它叫什么?

oracle sql-server

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

如何将数据库列表传递给 sp_MSforeachdb?

我有以下脚本,运行时给我一个逗号分隔的数据库名称列表。

        SET NOCOUNT ON
        declare @db_list NVARCHAR(MAX)
        DECLARE @command varchar(1000)

        SELECT @COMMAND = 'SELECT DB_NAME()'

         SELECT @db_list  = STUFF((
                                    SELECT ', ' + name FROM sys.databases
                                    WHERE name like '__Order'
                                    FOR XML PATH(''), 
                                    TYPE).value('.[1]', 'nvarchar(max)'), 1, 2, '')

         -- in case there are no DBs to show, then show no DB '***'
         select @db_list = COALESCE(@db_list,'***') 

         SELECT @db_list = RTRIM(LTRIM(REPLACE(@DB_LIST,',', ',''')))  


         select @db_list 
Run Code Online (Sandbox Code Playgroud)

这给了我以下结果:

UKOrder,' ATOrder,' AUOrder
Run Code Online (Sandbox Code Playgroud)

1)这给出了错误的结果集,我希望它是

'UKOrder','ATOrder','AUOrder'
Run Code Online (Sandbox Code Playgroud)

2) 如何将@db_list 传递给 sp_MSforeachdb?

假设我想跑

选择 db_name()

在@db_list 中的每个数据库中

英国订单

订单 …

sql-server dynamic-sql sql-server-2008-r2 sql-server-2012 sql-server-2014

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

对 VLDB 使用标准版

为了节省许可成本,我正在评估是否可以使用 VLDB 的标准版。我将概述场景:

  • 此处,“VLDB”表示 5TB。
  • 预计随着时间的推移,规模将保持稳定。
  • 几乎所有数据都在一个表中。
  • 查询和 DML 模式是一种键值类型的场景。主键只能进行单行访问。

我想知道我需要企业版做什么。我不会从分区中获得任何好处,因为我不想切换分区或将它们放在不同的存储上。数据压缩可以为我们节省 50%,但我们使用廉价存储。与昂贵的许可证相比,节省的费用微不足道。

对于 HA,我不明白为什么我不能使用已弃用但仍在工作的镜像。这并不理想,但企业版要为不明确的好处付出高昂的代价。

尽管如此,在这里使用标准版还是让我感到紧张,因为它不是普遍推荐的,而且似乎有点冒险。寻求有关这种情况的一些建议。谢谢!

sql-server license sql-server-2014 enterprise-edition

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