标签: sql-server-2012

如何从 sys.dm_os_performance_counters 查找页数/秒

我们如何从 dm_os_performance_counters DMV 中找到页数/秒,我在这里没有看到它:

SELECT * FROM sys.dm_os_performance_counters
where counter_name like '%page%'
Run Code Online (Sandbox Code Playgroud)

监控内存使用情况

页数/秒 定义:页数/秒计数器指示由于硬页错误而从磁盘检索的页数或由于页错误而写入磁盘以释放工作集中空间的页数。

performance sql-server sql-server-2012 performance-tuning

5
推荐指数
1
解决办法
1618
查看次数

SQL Server 中选择查询的区分大小写排序规则

我们的 SQL Server 的排序规则设置为SQL_Latin1_General_CP1_CI_AS

我有一个要求,即我们在不同的情况下具有相同的值,但 SQL Server 会以相同的方式对待它们,因为我们的排序规则在服务器级别设置为不区分大小写。我的要求是,我需要根据一个特定查询的大小写敏感性将每个值视为不同的。我COLLATE SQL_Latin1_General_CP1_CS_ASWHERE子句中使用来强制区分大小写。我的问题是:此排序规则是否仅应用于此查询,还是最终会在列或表级别为使用此列的所有查询更改此设置?

Create Table #tmpTest 
(
id int primary key identity(1,1),
name varchar(100)
)

Insert Into  #tmpTest  values ('TestQuery'),('TESTQUERY'),('TEstquerY')

Select * from #tmpTest
 Where name = 'TestQuery'

Select * from #tmpTest
 Where name = 'TestQuery'
 Collate SQL_Latin1_General_CP1_CS_AS
Run Code Online (Sandbox Code Playgroud)

sql-server query collation t-sql sql-server-2012

5
推荐指数
1
解决办法
1131
查看次数

有没有办法按字母数字列排序?

我有一个表单位

单位名称
单元1
2b单元
2c单元
单元2a
单元10
单元3a
3c单元
第11单元

我想排序相同

单位名称
单元1
单元2a
2b单元
2c单元
单元3a
3c单元
单元10
第11单元

我们如何在 t-sql 中实现这一点?

数据定义语言

create table units (unitname varchar(20))
insert into units values ('unit 1'),('unit 2b'),('unit 2c'),
('unit 2a'),('unit 10'),('unit 3a'),('unit 3c'),('unit 11')
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server-2012

5
推荐指数
1
解决办法
510
查看次数

如何从每日交易表(客户、发票、付款)检索(借方、贷方和余额)完整和日期范围)

有 3 个表:客户、发票和付款。带有发票和付款表的客户链接。问题是,需要检索报表明智的借方、贷方和余额。主要问题是未从日期范围获得期初余额。我提供带有查询的示例数据。

客户表:

(插入新客户时,如果他们有未分配余额与期初余额,否则保留空白(空))

CREATE TABLE BASE_Customer
(
    CustomerId INT IDENTITY(1,1),
    CustomerName VARCHAR(45),
    SalesOpeningBalance MONEY NULL,
    PRIMARY KEY(CustomerId)
)

INSERT INTO BASE_Customer (CustomerName, SalesOpeningBalance) VAlUES ('Ricky', 2500) -- with opening balance.
INSERT INTO BASE_Customer (CustomerName) VAlUES ('Smith') -- without opening balance.
Run Code Online (Sandbox Code Playgroud)

发票表:

CREATE TABLE BASE_Invoice
(
    InvoiceId INT IDENTITY(1,1),
    InvoiceDate DATE,
    CustomerId INT,
    Total MONEY,
    PRIMARY KEY(InvoiceId)
)

INSERT INTO BASE_Invoice (InvoiceDate, CustomerId, Total) VALUES ('2022-01-01', 1, 500) -- Ricky 
INSERT INTO BASE_Invoice (InvoiceDate, CustomerId, Total) VALUES ('2022-01-02', 2, …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012 sql-server-2019

5
推荐指数
1
解决办法
1292
查看次数

Varbinary 更新尝试

如果数据像这样每 3 个字节分割,是否可以将其适应更新查询,该更新查询必须寻找 3 个字节或 (0x000000) 的空闲序列,并用新序列替换它?问题是强制转换/替换无法处理未定义的数据(即 0x00)。varbinary 数据每 3 个字节划分 -> data(3bytes 长)data(3bytes 长)。

DECLARE @YourTable table
(
Id INT PRIMARY KEY,
Val VARBINARY(50)
)

INSERT @YourTable
VALUES (1, 0x0329000414000B14000C14000D0F00177800224600467800473C00550F00000000000000000000000000),
       (2, 0x0329002637000B14000C14000D0F00177800224600467800473C00550F00000000000000000000000000);


SELECT Id, Triplet
FROM @YourTable T
JOIN (VALUES (1),(4),(7),(10),(13),(16),(19),(22),(25),(28),(31),(34),(37),(40),(43),(46),(49)) Nums(Num) ON Num <= DATALENGTH(T.Val)
CROSS APPLY (VALUES (SUBSTRING(T.Val, Num, 3))) V(Triplet)
WHERE Triplet = 0x000000 and DATALENGTH(Triplet) = 3
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

UPDATE x    
set  x.column =  CAST(REPLACE(x.column, 0x000000, 0xFFFFFF) AS VARBINARY)
from Table as x 
Run Code Online (Sandbox Code Playgroud)

仅当列不包含数据时才有效。

UPDATE x …
Run Code Online (Sandbox Code Playgroud)

query sql-server-2012 varbinary

5
推荐指数
1
解决办法
429
查看次数

Management Studio 2012 向后兼容性

任何尝试过这个的人的两个快速问题:

  1. Management Studio 2012 是否会与 Management Studio 2008 等一起安装和运行?我依稀记得在 2008 年和 2005 年无法做到这一点。

  2. Management Studio 2012 是否完全支持连接和管理 SQL Server 2008?Intellisense 是否仍然适用于旧版本?

sql-server sql-server-2012 sql-server-tools

4
推荐指数
1
解决办法
4300
查看次数

镜像和缓冲页写入/秒

“缓冲区管理器:页面写入数/秒”(* 8 KB)是否是通过可用性组复制所有数据库将使用多少带宽的良好指标?

如果不是,为什么这些不等价?只是有一些开销还是它们基本上不相关?

sql-server-2008 sql-server perfmon sql-server-2012

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

从大表中按日期选择每第 n 个值

为了清楚起见,在 2012-06-20 重写了这个问题,检查旧版本的编辑

背景和问题

我为某些设备上的几个传感器收集数据。我想在图形中以曲线的形式为用户显示这些数据,即我想绘制测量点并在它们之间画线。用户可以通过在图表中缩放和平移来决定他想要显示值的日期范围。

测量值的数量开始增加,此时我有许多值在500'000'000范围内,并且还在计数。对于单个传感器,到目前为止,我最多可以找到大约2'000'000 个值,但它很可能会增加。这些值不是以均匀间隔(即每秒)记录的,而是在可以测量更改时记录的(请参阅下面日期列中的差异)。

Date  SensorValue
----- -----------
10    123
30    118
70    114
85    115
90    116
95    117
Run Code Online (Sandbox Code Playgroud)

由于此图形的显示区域为1000 像素,因此获取所有这些值毫无意义。相反,我尝试获取最多1000 个值,并将它们均匀分布在用户放大的日期范围内。确切地返回日期范围内的哪些值并不重要,只要它们在日期方面均匀分布(记住这一点很重要,因为它们不是以均匀间隔记录的)。

我将这些值存储在一个非常简单的表中,如下所示,只有一个(聚集)索引。请注意,Date存储为整数(“unix 时间”)而不是datetime2字段。该表按Date是否重要进行分区。

CREATE TABLE [dbo].[SensorValues](
  [DeviceId] [int] NOT NULL,
  [SensorId] [int] NOT NULL,
  [SensorValue] [int] NOT NULL,
  [Date] [int] NOT NULL,
CONSTRAINT [PK_SensorValues] PRIMARY KEY CLUSTERED 
(
  [DeviceId] ASC,
  [SensorId] ASC,
  [Date] DESC
);
Run Code Online (Sandbox Code Playgroud)

我正在寻找两件事之一,要么是一个改进的查询,它可以更快地返回这些值,要么 …

sql-server sql-server-2012

4
推荐指数
1
解决办法
9017
查看次数

如何确定高可用性配置是否正常工作

我正在第一次设置始终在高可用性集群上的过程。任何人都可以在配置组并测试以确保它正常运行后从网络角度向我解释,SQL 如何知道何时进行故障转移,以及我的应用程序如何连接到 SQL 服务器知道它指向哪里?

例如,我有一个foo连接到命名实例的应用程序DB01.FOO。当foo失败并转至 时DB02.FOO,我的应用程序如何知道它应该与之交谈DB02.FOO

DB02.FOO在同一个域中,但在不同的服务器中。在尝试之前,我只是想先了解一下这方面的所有方面。如果有任何链接,有人会推荐这也很棒。

clustering sql-server-2012 high-availability availability-groups

4
推荐指数
1
解决办法
766
查看次数

将所有文件重新定位到文件夹复选框不可用 sql server 2012

使用 SQL 2012 企业版

按照此处的说明恢复备份:http : //msdn.microsoft.com/en-us/library/ms186390.aspx#Restrictions

我需要能够重命名数据库,因为它是实例上的第二个副本(测试目的)。但我无法重命名它,也无法更改它将 MDF/LDF 文件恢复到的文件夹。

无论出于何种原因,“将所有文件重定位到文件夹”复选框都不可用。

从 SQL 2005 备份还原。

sql-server restore sql-server-2012

4
推荐指数
1
解决办法
4761
查看次数