我有一个程序如下:
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)。在这个过程中我做错了什么吗?
我正在阅读关于如何根据 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) 我想使用 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) 在这里(和其他地方)的几个问答代码片段中可以看到以下代码,我正在尝试翻译部分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)] 部分会获取系统管理员的名称并将其传递给系统管理员以执行作业,但我没有找到一个很好的参考资料来表明所有三个部分是如何协同工作的.
是否可以授予类似 SA 的权限减去对用户数据库的任何访问权限?我希望人们能够从系统数据库中收集有关 Sql Server 的信息,但我想确保无法触及用户数据库。解决这个问题的最佳方法是什么?
答案是肯定的。从某种意义上说,SQL Server 将通过将 4 字节附加到键来使其独一无二。鉴于聚集索引用于数据寻址目的(正确?),这是有道理的。
根据我的研究,似乎 SQL Server 也要求非聚集索引也是唯一的。当使用非唯一列时,SQL Server 会附加一个 4 字节的“uniquefier”值以使其唯一。那是对的吗?
为什么 SQL Server 要求非聚集索引使用唯一键?
如何比较以前记录的值?
桌子:
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 中的表面积由什么组成?
Oracle 有类似的概念吗?如果是,它叫什么?
我有以下脚本,运行时给我一个逗号分隔的数据库名称列表。
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
为了节省许可成本,我正在评估是否可以使用 VLDB 的标准版。我将概述场景:
我想知道我需要企业版做什么。我不会从分区中获得任何好处,因为我不想切换分区或将它们放在不同的存储上。数据压缩可以为我们节省 50%,但我们使用廉价存储。与昂贵的许可证相比,节省的费用微不足道。
对于 HA,我不明白为什么我不能使用已弃用但仍在工作的镜像。这并不理想,但企业版要为不明确的好处付出高昂的代价。
尽管如此,在这里使用标准版还是让我感到紧张,因为它不是普遍推荐的,而且似乎有点冒险。寻求有关这种情况的一些建议。谢谢!