小编swa*_*eck的帖子

SQL Server 中的“记录”和“行”有什么区别?

有一个关于在 SQL Server添加日期和时间的无关紧要的问题引发了一场相当引人入胜的分类辩论。

那么我们如何区分这些相关术语以及如何正确使用它们呢?

记录

sql-server terminology row record

62
推荐指数
8
解决办法
3万
查看次数

在 SQL Server 中,对存储过程进行分组的目的是什么?

我不得不处理的最令人困惑的问题之一与存储过程组有关。给定一个存储过程 ,usp_DoSomethingAwesome我可以通过调用它在另一个组中创建该过程usp_DoSomethingAwesome;2

我在解决一些由系统生成的插入、更新和删除复制存储过程引起的复制问题(发布者:SQL 2000 Ent.,Dist/Sub:2008 R2 Ent.)时发现了这一点。

拥有这种“分组”能力的目的/想法是什么?

sql-server stored-procedures

35
推荐指数
2
解决办法
4524
查看次数

支持使用 ELT 过程而不是 ETL 的论据是什么?

我意识到我的公司使用 ELT(提取-加载-转换)流程而不是使用 ETL(提取-转换-加载)流程。
这两种方法有什么区别,在哪些情况下一种会比另一种“更好”?如果您能提供一些示例,那就太好了。

data-warehouse etl business-intelligence

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

如何保留未嵌套数组中元素的原始顺序?

鉴于字符串:

'我认为 PostgreSQL 很漂亮'

我想对该字符串中找到的单个单词进行操作。本质上,我有一个单独的,我可以从中获取单词详细信息,并希望在此字典上加入该字符串的未嵌套数组。

到目前为止,我有:

select word, meaning, partofspeech
from unnest(string_to_array('I think that PostgreSQL is nifty',' ')) as word
from table t
join dictionary d
on t.word = d.wordname;
Run Code Online (Sandbox Code Playgroud)

这完成了我希望做的事情的基本原理,但它没有保留原始的词序。

相关问题:
PostgreSQL unnest() with element number

postgresql parse sorting array

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

是否可以强制优化器消除此分区视图中的不相关表?

我正在为大表测试不同的体系结构,我看到的一个建议是使用分区视图,将大表分解为一系列较小的“分区”表。

1 , 2 , 3 , 4

在测试这种方法时,我发现了一些对我来说没有多大意义的东西。当我过滤事实视图上的“分区列”时,优化器只查找相关表。此外,如果我过滤维度表上的那一列,优化器会消除不必要的表。

但是,如果我过滤维度的其他方面,优化器会在每个基表的 PK/CI 上寻找。

以下是相关查询:

select 
    od.[Year], 
    AvgValue = avg(ObservationValue)
from dbo.v_Observation o 
join dbo.ObservationDates od
    on o.ObservationDateKey = od.DateKey
where o.ObservationDateKey >= 20000101
    and o.ObservationDateKey <= 20051231
group by od.[Year];

select 
    od.[Year], 
    AvgValue = avg(ObservationValue)
from dbo.v_Observation o 
join dbo.ObservationDates od
    on o.ObservationDateKey = od.DateKey
where od.DateKey >= 20000101
    and od.DateKey <= 20051231
group by od.[Year];

select 
    od.[Year], 
    AvgValue = avg(ObservationValue)
from dbo.v_Observation o 
join dbo.ObservationDates od
    on o.ObservationDateKey = od.DateKey …
Run Code Online (Sandbox Code Playgroud)

sql-server partitioning sql-server-2014

22
推荐指数
2
解决办法
853
查看次数

我应该对这个 NO JOIN PREDICATE 警告感到震惊吗?

我正在对性能不佳的存储过程的点点滴滴进行故障排除。程序的这一部分抛出了一个 NO JOIN PREDICATE 警告

select
    method = 
        case methoddescription 
            when 'blah' then 'Ethylene Oxide'
            when NULL then 'N/A'
            else methoddescription
        end,
    testmethod = 
        case methoddescription 
            when 'blah' then 'Biological Indicators'
            when NULL then 'N/A'
            else 'Dosimeter Reports'
        end,
    result = 
        case when l.res is null or l.res <> 1 then 'Failed'
        else 'Passed'
        end,
    datecomplete = COALESCE(CONVERT(varchar(10), NULL, 101),'N/A')
from db2.dbo.view ls
    join db1.dbo.table l
        on ls.id = l.id
    where item = '19003'
        and l.id = '732820'
Run Code Online (Sandbox Code Playgroud)

视图 ( …

sql-server execution-plan sql-server-2008-r2 warning

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

我应该使用分离/复制/附加还是通过备份-恢复-重放来迁移数据?

我即将着手将数据库文件迁移到新的 SAN(从旧的 SAN),并且我有几个选项可以实现这一点。(1) 有人建议我调查将完整备份恢复到服务器上新数据库的工作量。但是,(2) 我最初的计划是通过分离然后重新附加数据库将文件从旧 SAN 复制到新 SAN。

我的直觉告诉我,我宁愿分离、复制和附加,因为它看起来更安全,但这可能只是我的天真。我不想在重命名数据库的过程中错过事务或以某种方式“破坏某些东西”。

我想我的问题是我对 BACKUP-RESTORE-Replay 选项的怀疑是否合理,以及该选项的其他优点或风险是什么?

sql-server migration sql-server-2000

18
推荐指数
2
解决办法
6084
查看次数

stats_column_id 和 index_column_id 不会随着聚集索引的物理顺序改变而更新

除非我误解了列的用途,否则以下代码表明聚集索引结构的更改不会更改sys.stats_columns DMV 中stats_column_id列的序数位置 ( ) 。(在 AdventureWorks2014、AdventureWorks2008R2 中测试)

select i.name, c.name, ic.column_id, ic.index_column_id
from sys.indexes i 
join sys.index_columns ic
    on i.object_id = ic.object_id
    and i.index_id = ic.index_id
join sys.columns c 
    on i.object_id = c.object_id
    and ic.column_id = c.column_id
where i.name = 'PK_BusinessEntityAddress_BusinessEntityID_AddressID_AddressTypeID'
order by ic.key_ordinal;

select sh.name,s.name, c.name, c.column_id, sc.column_id, sc.stats_column_id
from sys.stats s 
join sys.stats_columns sc
    on s.object_id = sc.object_id
    and s.stats_id = sc.stats_id
join sys.columns c 
    on s.object_id = c.object_id
    and sc.column_id = c.column_id
join …
Run Code Online (Sandbox Code Playgroud)

sql-server statistics dmv

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

DBCC CHECKDB 每 20 - 60 秒触发一次

我有一个开发环境,它正在快速部署到生产环境中,并且在日志中注意到大约每 20 秒我就会看到一条消息:

Starting up database 'dbname'
CHECKDB for database 'dbname' finished without errors
Run Code Online (Sandbox Code Playgroud)

我注意到这一点是因为正在测试它的最终用户有一个问题,我将其与我在 Windows 事件日志(应用程序日志)中注意到的错误隔离开来:

The log for database 'dbname' is not available. Check event log for related messages.
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我没有发现相关消息,但通过离线/在线循环解决了。

我唯一能想到的是,这个应用程序每 1 毫秒收集一次数据,但所有这些数据都没有插入到数据库中。作为一个开发服务器,它被配置为日志和数据在同一个驱动器上。考虑到这两条信息,我倾向于这是一个 IO 问题,并且服务器正试图从与存储 (SAN) 的连接丢失中恢复。然而,即使这对我来说也没有意义,因为它并没有丢失所有 dbs,只是丢失了这个。还有什么可能导致这种情况?

平台:Windows Server 2008 R2 (Std.) 上的 SQL Server 2008 R2 (Ent.)

sql-server sql-server-2008-r2 transaction-log

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

是否存在一种方法来确定包含多个文件的文件组中的分配单元的确切文件?

我希望能够详细了解哪些数据库文件包含数据库中各种 HoBT(对齐和非对齐)的分配单元。

在我们开始为每个文件组创建多个数据文件之前,我一直使用的查询(见下文)一直对我有用,我只能弄清楚如何获得与文件组级别一样的细粒度。

select 
    SchemaName = sh.name, 
    TableName = t.name, 
    IndexName = i.name, 
    PartitionNumber = p.partition_number,
    IndexID = i.index_id,
    IndexDataspaceID = i.data_space_id,
    AllocUnitDataspaceID = au.data_space_id,
    PartitionRows = p.rows
from sys.allocation_units au
join sys.partitions p
    on au.container_id = p.partition_id
join sys.indexes i 
    on i.object_id = p.object_id
    and i.index_id = p.index_id
join sys.tables t 
    on p.object_id = t.object_id
join sys.schemas sh
    on t.schema_id = sh.schema_id
where sh.name != 'sys'
    and au.type = 2
union all 
select 
    sh.name, 
    t.name, 
    i.name, 
    p.partition_number,
    i.index_id,
    i.data_space_id, …
Run Code Online (Sandbox Code Playgroud)

sql-server filegroups metadata compression sql-server-2014

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