标签: sql-server-2012

无论层次如何,对 RANK 的 MDX 查询

我希望向我的 SSAS Cube (SSAS 2012) 添加一个计算,该计算将显示当前成员与该石斑鱼中所有其他成员的相对排名,而无需提前指定石斑鱼

例如,假设我已经有一个Efficiency定义为 $$/hour 的计算。

我还想添加一个Efficiency Rank计算,它会告诉我当前成员在它设置中的相对位置。

我试过的语法是

RANK([Measures].[Efficiency].CurrentMember, [Measures].[Efficiency])
Run Code Online (Sandbox Code Playgroud)

我意识到这是不正确的。

我似乎无法在其他任何地方找到这方面的指南,所以我希望有一些既定的最佳实践或模式,因为这似乎是一个相对常见的业务需求。

ssas sql-server-2012 mdx

10
推荐指数
1
解决办法
1962
查看次数

Visio 2010 和 SQL 2012 - 逆向工程

我们已升级到 SQL 2012 并尝试将我们的 Dbs 反向工程到 Visio 2010。我使用 SQL 11 驱动程序设置了连接,而 Visio 抱怨不支持该驱动程序。

有人遇到过这个吗?

database-design sql-server sql-server-2012 visio

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

对于来自同一行的多个选择,是否有比 Union All 更好的选择?

示例架构:

CREATE TABLE [dbo].[Base](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Option1ID] [int] NULL,
[Option2ID] [int] NULL,
[Option3ID] [int] NULL,
[Option1Name] [varchar] NULL,
[Option2Name] [varchar] NULL,
[Option3Name] [varchar] NULL,
[Option1LName] [varchar] NULL,
[Option2LName] [varchar] NULL,
[Option3LName] [varchar] NULL,)
Run Code Online (Sandbox Code Playgroud)

有没有办法让结果显示如下:

ID | OptionID | OptionName | OptionLName
Run Code Online (Sandbox Code Playgroud)

我尝试使用 UNION ALL 来实现这一点,但这意味着在我的示例中,在同一行上重复 3 次,在我的实际问题中,我必须这样做 10 次。由于遗留代码,我无法对表进行规范化。有没有办法只遍历 Base 行一次?

sql-server sql-server-2012

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

如何展平具有两个相关“许多”表的表的结果?

我重新组织了数据库中的一些表以使其更加灵活,但我不确定如何编写 SQL 以从中提取有意义的数据。

我有以下表格(为了更清楚的例子,有些缩写):

CREATE TABLE Loans(
    Id int,
    SchemaId int,
    LoanNumber nvarchar(100)
);

CREATE TABLE SchemaFields(
    Id int,
    SchemaId int,
    FieldName nvarchar(255)
);

CREATE TABLE LoanFields(
    Id int,
    LoanId int,
    SchemaFieldId int,
    FieldValue nvarchar(4000)
);
Run Code Online (Sandbox Code Playgroud)

使用以下数据:

INSERT INTO Loans (Id, SchemaId, LoanNumber) VALUES (1, 1, 'ABC123');

INSERT INTO SchemaFields (Id, SchemaId, FieldName) VALUES (1, 1, 'First Name');
INSERT INTO SchemaFields (Id, SchemaId, FieldName) VALUES (2, 1, 'Last Name');

INSERT INTO LoanFields (Id, LoanId, SchemaFieldId, FieldValue) VALUES (1, 1, 1, …
Run Code Online (Sandbox Code Playgroud)

pivot t-sql sql-server-2012

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

SQL Server 2012 中的 Collat​​ion Code (blank, 90, 100, 110) 的含义是什么

在安装 SQL Server 2012 期间,在 Collat​​ion 选项卡中,我可以在French_CI_ASFrench_100_CI_AS之间进行选择。

它们是什么意思,哪个是新的?当没有代码时,它是比 100 新还是旧?

sql-server collation sql-server-2012

10
推荐指数
2
解决办法
7478
查看次数

如何将 SSRS (SQL Server 2012) 配置为在不同的实例上运行,但与 SharePoint 的服务器相同

我有一个在 Windows 2008R2 上运行的 SQL Server 2012 实例,旁边还有另一个运行 SharePoint 的 SQL Server 2012 实例(我认为它是 SharePoint 2010)。

当我尝试访问时,http://localhost/Reports_<InstanceName>我得到:

  1. 证书警告(我继续进行 - 我并不真正关心这个 - 它是一台开发机器)
  2. 以下文字: Cannot connect to the configuration database.

Google 表示该错误消息与 SharePoint 相关,因此我倾向于认为 SharePoint 正在劫持 SSRS 请求。

有没有我可以对 SSRS 或其他东西(可能是 IIS ??)进行的配置,让我可以访问报表服务器?

注意:我可以通过 SSMS 连接到 Reporting Services 就好了。

ssrs sql-server-2012

10
推荐指数
1
解决办法
437
查看次数

锁使用的内存

我有点好奇,具有 128 GB 数据库 RAM 大小的 SQL 2012 企业版之一是 370 GB 并且还在增长,锁 (OBJECTSTORE_LOCK_Manager) 内存管理员使用的内存量显示为 7466016 KB。我也可以通过查看性能计数器来确认select * from sys.dm_os_performance_counters where counter_name = 'Lock Memory (KB)'

但是,当我运行查询时

select count(*) from sys.dm_tran_locks
Run Code Online (Sandbox Code Playgroud)

它只显示了 16 个锁。那么什么是使用超过 7 GB 的锁。有办法查到吗?

这是否意味着一旦分配了锁的内存,SQL 还没有释放它?在过去的 1 小时内,我没有看到锁计数超过 500,但锁内存保持不变。

最大服务器内存为 106 GB,我们没有在内存中使用锁定页面,我在过去 12 小时内没有看到任何内存压力或错误日志中的任何错误。可用 MBytes 计数器显示超过 15 GB 的可用内存。

活动监视器始终显示 0 个等待任务,因此显然没有阻塞。

考虑到 SQL 服务器锁占用大约 100 字节的内存,7 GB 是大量内存,并试图找出谁在使用它。

我通过锁计数运行服务器仪表板报告最高事务,它说“当前系统上没有运行锁定事务。但是,锁内存仍然显示如上所述。数据库在夜间最忙。

sql-server-2008 sql-server memory sql-server-2008-r2 sql-server-2012

10
推荐指数
2
解决办法
5497
查看次数

我可以在装有 2008 R2 的机器上安装 SQL Server 2012 吗?

我使用 SQL Server 2008 R2 已经有一段时间了,它运行良好。现在我需要使用 SQL Server 2012。这会影响我现有的数据库吗?在运行 SQL Server 2008 R2 的计算机上安装 SQL Server 2012 涉及多少风险?

sql-server sql-server-2008-r2 installation sql-server-2012

10
推荐指数
2
解决办法
5万
查看次数

使用聚集索引时是否读取“行外”字段?

我知道当使用VARCHAR(MAX)/NVARCHAR(MAX)列时,数据被存储out of the row- 数据行将有一个指向存储“大值”的另一个位置的指针。

我有以下问题:

  1. 是存储每个字段out of the row还是仅存储这些字段max
  2. 如果您使用clustered index表的 来读取整个记录,那么存储在行外的字段是否也被读取?

VARCHAR(MAX) 或 NVARCHAR(MAX) 被视为“大值类型”。大值类型通常存储在“行外”。这意味着...

clustered-index varchar sql-server-2012

10
推荐指数
1
解决办法
424
查看次数

SQL Server 2012 缓冲池外的内存消耗

我有一个 SQL Server 2012 SP2 企业版的实例,它消耗的内存比最大值高约 20GB。内存限制。实例限制为 65GB,但以下查询中使用的物理内存显示为 86GB

SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB]
FROM sys.dm_os_process_memory;
GO
Run Code Online (Sandbox Code Playgroud)

服务器是具有 2 个 NUMA 节点的物理服务器。有没有一种方法可以找出正在消耗缓冲池之外的内存的东西(我假设这就是正在发生的事情)?

这是 DBCC MEMORYSTATUS 的输出:-

DBCC MEMORYSTATUS 的输出

这是设置的内存限制:-

内存限制的屏幕截图

提前致谢。

更新:-我已经运行了 Aaron 建议的查询

SELECT TOP (20) * FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC
Run Code Online (Sandbox Code Playgroud)

这是输出:-

内存职员输出

pages_kb 的总和达到 ~60GB

更新 2:- DBCC MEMORYSTATUS 的完整输出在这里:- http://pastebin.com/nGn6kXEc

更新 3:- 此处在 excel 文件中输出 Shanky 的脚本:- http://jmp.sh/LKRlH4K

更新 4:- 输出的屏幕截图:-

SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB]
FROM sys.dm_os_process_memory;
GO
Run Code Online (Sandbox Code Playgroud)

PhysMemInUse 截图

所以这似乎表明 SQL Server 正在使用超过 65GB 的设置。

sql-server memory sql-server-2012

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