我一直在仓库工作一段时间.
我对Columnar数据库以及它们为数据检索提供的速度感到好奇.
我有多部分问题:
我以前写这样的EXISTS检查:
IF EXISTS (SELECT * FROM TABLE WHERE Columns=@Filters)
BEGIN
UPDATE TABLE SET ColumnsX=ValuesX WHERE Where Columns=@Filters
END
Run Code Online (Sandbox Code Playgroud)
前一个DBA中的一个告诉我,当我做一个EXISTS
条款时,请使用SELECT 1
而不是SELECT *
IF EXISTS (SELECT 1 FROM TABLE WHERE Columns=@Filters)
BEGIN
UPDATE TABLE SET ColumnsX=ValuesX WHERE Columns=@Filters
END
Run Code Online (Sandbox Code Playgroud)
这真的有所作为吗?
Oracle具有可以发出的SQL命令,因此不会记录事务.SQL Server 2008有类似的东西吗?
我的场景:我们需要服务器上的Tx日志(Dev,QA,Prod),但也许我们可以在开发者机器上没有它们.
我在命令行上使用WinZip压缩文件.由于我们每天都会存档,因此我尝试为这些文件添加日期和时间,以便每次都自动生成一个新文件.
我使用以下命令生成文件名.将其粘贴到命令行,您应该看到一个带有日期和时间组件的文件名.
echo Archive_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.zip
Run Code Online (Sandbox Code Playgroud)
产量
Archive_20111011_ 93609.zip
Run Code Online (Sandbox Code Playgroud)
但是,我的问题是AM vs PM.AM时间戳给我时间9
(带有前导空格)与10
自然占据两个空格.
我想我的问题将延续到头九天,前九个月等等.
我如何解决这个问题,以便包含前导零而不是前导空格,所以我得到了Archive_20111011_093609.zip
?
我只有SQL Server 2008客户端工具.我想使用Spy ++,但当然,它只附带Visual Studio安装.
我可以使用Spy ++有一个很好的替代品吗?
我有一些想法,有些是我随着时间的推移积累的,但我真的想知道在建模数据库时是什么让事情顺利进行:
我正在使用脚本创建SQL Server复制.当我尝试执行时
The job failed. Unable to determine if the owner (STAR\moorer7) of job L3BPT2M-Atlas-14 has server access (reason: Could not obtain information about Windows NT group/user 'STAR\moorer7', error code 0x5. [SQLSTATE 42000] (Error 15404)).
这是由定义复制的脚本创建的作业.
我该如何调试?
我试图将一些数据汇总到一个报告中,并需要连接其中一个表的行值.这是基本的表结构:
评测
ReviewID
ReviewDate
Run Code Online (Sandbox Code Playgroud)
评审
ReviewerID
ReviewID
UserID
Run Code Online (Sandbox Code Playgroud)
用户
UserID
FName
LName
Run Code Online (Sandbox Code Playgroud)
这是M:M的关系.每个评论都可以有很多评论者; 每个用户都可以与许多评论相关联.
基本上,我想要看的是Reviews.ReviewID,Reviews.ReviewDate,以及该Review的所有相关用户的FName的串联字符串(逗号分隔).
代替:
ReviewID---ReviewDate---User
1----------12/1/2009----Bob
1----------12/1/2009----Joe
1----------12/1/2009----Frank
2----------12/9/2009----Sue
2----------12/9/2009----Alice
Run Code Online (Sandbox Code Playgroud)
显示这个:
ReviewID---ReviewDate----Users
1----------12/1/2009-----Bob, Joe, Frank
2----------12/9/2009-----Sue, Alice
Run Code Online (Sandbox Code Playgroud)
我发现这篇文章描述了一些方法,但是大多数方法似乎只处理一个表而不是多个; 不幸的是,我的SQL-fu不够强大,无法根据我的情况进行调整.我对该网站上使用FOR XML PATH()的示例特别感兴趣,因为它看起来最干净,最直接.
SELECT p1.CategoryId,
( SELECT ProductName + ', '
FROM Northwind.dbo.Products p2
WHERE p2.CategoryId = p1.CategoryId
ORDER BY ProductName FOR XML PATH('')
) AS Products
FROM Northwind.dbo.Products p1
GROUP BY CategoryId;
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我一把吗?任何帮助将不胜感激!
我有一个仓库表,里面有16吨数据.我有几个Integer列.我们必须为我们编写的每个查询将这些转换为BIGINT,因为SUM太大而不适合INT.
我们现在正在开发一个新的数据集市.所以我们想,为什么不将所有这些列更改为BIGINT,我们不必担心新的查询集.
由于数据已经加载,我想我会使用Management Studio并更改数据类型.但我首先得到一个警告:
Saving Definition Changes to tables with large amounts of data could take a considerable amount of time. While changes are being saved, table data will not be accessible.
然后我收到一个错误:
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
我该如何解决这个问题?
我对表上的索引有疑问,我把它放在Stack Overflow上.我有我的答案,但有人更改了字indices
说indexes
.
我们知道复数Index
是Indices
,但我们也知道几乎每个人都喜欢"错误"这个词.
这样的其他"错误"术语究竟应该是什么,但正在超越他们的"正确"同行?
sql ×6
sql-server ×4
database ×2
t-sql ×2
.net ×1
batch-file ×1
cmd ×1
command-line ×1
indexing ×1
indices ×1
replication ×1
spy++ ×1
standards ×1
terminology ×1
windows ×1