小编Pau*_*ite的帖子

所有连接字符串参数的官方文档

我多年来一直在寻找这些信息,但似乎找不到它:

learn.microsoft.com上是否有任何文档提供了一个表,其中包含 SQL Server 和 LocalDB 的所有有效连接字符串参数、它们的有效参数值、它们的默认值及其含义?

我找到的只是一些教程和示例页面,但没有完整的参考页面。

sql-server connectivity connection-string

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

PostgreSQL 11.9 无法重新启动服务器,错误 -- pg_ctl: 目录“/var/lib/postgresql/11/main”不是数据库集群目录

我们一直在努力重启停电后关闭的数据库集群服务器。我们尝试过 systemctl 、 pg_ctl 和 pg_ctlcluster 命令,但我们总是遇到同样的错误。

目录“/var/lib/postgresql/11/main”不是数据库集群目录

在我们的配置文件(postgresql.conf)中提到了相同的路径:

data_directory = '/var/lib/postgresql/11/main'

我无法理解为什么我们会收到此错误,即使服务器在断电之前以相同的配置运行。

这是我们的生产服务器。

我输入这些命令的命令行是:

  • pg_ctl : /usr/lib/postgresql/11/bin/pg_ctl 启动 -D /var/lib/postgresql/11/main
  • pg_ctlcluster : /usr/bin/pg_ctlcluster --skip-systemctl-redirect 11-main start (这与 postgresql@.service 的 ExecStart 参数下提到的命令相同)
  • systemctl : systemctl 状态 postgresql@11-main.service

postgresql postgresql-11

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

SQL Server 可用性组和备份

SQL Server 可用性组备份首选项。

\n

我们的 AG 有 3 个节点。

\n

我想在主数据库上进行完整备份和差异备份,在辅助数据库上进行日志备份。

\n

当我配置“任何副本”时,所有副本的备份优先级均为 50,日志备份不在辅助副本上运行。

\n

如果我确实喜欢辅助完整备份,则不会在主数据库上运行。

\n

如何配置为仅在主数据库上进行完整/差异备份并仅在辅助数据库上进行日志备份?

\n

我们希望将备份卸载到辅助副本的原因是为了提高主副本在高峰时段的性能。

\n

我们当前的设置每 3 天进行一次完整处理,并在每天下班后进行比较,我们\xe2\x80\x99ve 每 15 分钟运行一次日志备份。它通过具有自定义 SP 的 SQL 代理作业\xe2\x80\x99s。

\n

sql-server backup availability-groups

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

查询存储中强制计划的奇怪行为

我在查询存储中强制执行计划。计划与每天运行一次的作业中的过程相关联。这项工作的步骤之一就是:

EXEC [schema].[LoadData]
Run Code Online (Sandbox Code Playgroud)

过程 [schema].[LoadData] 看起来像

TRUNCATE TABLE [schema].[Data];
     
    INSERT INTO [schema].[Data]
           ([A1],
           [A2],
          .
          .
          .,
          [A49]
    )                
    SELECT *
        ,CURRENT_TIMESTAMP AS [Insert TimeStamp] 
    FROM [schema].[View]   
Run Code Online (Sandbox Code Playgroud)

其中 view 是包含一些 CTE 并使用同义词的视图(连接到来自不同数据库的表)。

在查询存储中执行如下所示: 在此输入图像描述

为了测试强制计划是否有效,我按照以下步骤操作:

  1. 在 SSMS 中运行查询 ->EXEC [schema].[LoadData]
  2. 上面的执行被视为不同的查询,因此在查询存储中没有看到任何新的查询 = 7
  3. DBA 仅使用运行查询的步骤创建一个新作业 ->EXEC [schema].[LoadData]
  4. 运行上述新创建的作业导致计划 ID = 29800

问题为什么执行计划没有被强制?在“强制计划失败计数”列中为 0。

sql-server query-store

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

更改临时文件中列的排序规则

我在数据库中有一个使用临时文件的例程。但数据库的排序规则与临时数据库的排序规则不匹配。我无法更改数据库的排序规则,它是客户端数据库。我试过这个:

BEGIN
DECLARE @Collation sysname;
SELECT @Collation=collation_name FROM sys.databases WHERE name = DB_NAME();

CREATE TABLE #Resultaten
(Supplier smallint,
Productcode varchar(20) COLLATE @Collation;,...)
...
Run Code Online (Sandbox Code Playgroud)

但这行不通。

有没有办法将临时文件列的排序规则与当前数据库的排序规则相匹配?

sql-server collation tempdb temporary-tables

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

如何将表格的列排成一行?

我有一个数据库,其中架构是:

CREATE TABLE [dbo].[Student]([Id] [int] NULL,[Name] [varchar](255) NULL,[Mark] [int] NULL)
INSERT [dbo].[Student] ([Id], [Name], [Mark]) VALUES (1, N'Medi', 10)
INSERT [dbo].[Student] ([Id], [Name], [Mark]) VALUES (2, N'Ibra', 15)
INSERT [dbo].[Student] ([Id], [Name], [Mark]) VALUES (3, N'Simo', 20)
Run Code Online (Sandbox Code Playgroud)

所以查询select * from Student

ID 姓名 标记
1 梅迪 10
2 伊布拉 15
3 西莫 20

但我希望第一行的标题如下所示:

ID 姓名 标记
ID 姓名 标记
1 梅迪 10
2 伊布拉 15
3 西莫 20

为了建立这个结果,

  • 首先我想获取列:

我已经通过INFORMATION_SCHEMA查询完成了此操作:

SELECT COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS …
Run Code Online (Sandbox Code Playgroud)

sql-server ssms

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

创建函数时出现无效对象名称错误

我有这个功能get_department。函数内部有一个函数调用get_po_amount.

get_po_amount函数不再存在,因此当我尝试创建 Main 函数时get_Department,出现错误“对象名称 get_po_amount 无效”。

有什么方法可以通过不在内部创建函数来创建该函数。

我也有同样的观点问题。在另一个视图中调用一个视图。

我创建这些函数只是为了展示一个示例,我需要在大型数据库上执行此操作。

CREATE FUNCTION [dbo].[GET_DEPARTEMNET]
(
    @DEPTNO NVARCHAR(100)
    
)
    RETURNS TABLE 
AS 
RETURN 
   (    
        SELECT * FROM  [dbo].[dept] WHERE DEPTNO=(SELECT [dbo].[GET_PO_AMOUNT](@DEPTNO)))
GO
Run Code Online (Sandbox Code Playgroud)

sql-server functions errors

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

可变二进制模式搜索

我正在尝试进行一个遍历 varbinary 数据的查询。问题是我无法真正完成我想要实现的目标。关于该列,您应该了解的是 varbinary(50) ,并且出现的模式没有特定的书写顺序,这意味着每个前缀可以是任何位置,只要它有 3 个字节(0x000000) 第一个字节是前缀,第二个和第三个是值数据我想检查它是否在我喜欢的范围内。所有的数据都是这样写的。

我尝试过的:

DECLARE @t TABLE (
    val VARBINARY(MAX)
)

INSERT INTO @t SELECT 0x00000100000000000000000000000000000000000000000000000000
INSERT INTO @t SELECT 0x00001000000000000000000000000000000000000000000000000000
INSERT INTO @t SELECT 0x00010000000000000000000000000000000000000000000000000000
INSERT INTO @t SELECT 0x00100000000000000000000000000000000000000000000000000000
INSERT INTO @t SELECT 0x00000f00000000000000000000000000000000000000000000000000

declare @pattern varbinary(max)
declare @pattern2 varbinary(max)
set @pattern = 0x0001
set @pattern2 = @pattern+0xFF

select @pattern,@pattern2

SELECT
    *
FROM @t
WHERE val<@pattern
OR val>@pattern2
Run Code Online (Sandbox Code Playgroud)

这是完全失败的,如果我使用 4 个符号作为图案,图案最多可以精确到 2 个符号,只有当图案位于预定义位置时,它才会起作用。我已经尝试过这个和下面所有内容的组合。

WHERE CONVERT(varbinary(2), val) = 0xdata
Run Code Online (Sandbox Code Playgroud)

还有这个:

select * 
from table …
Run Code Online (Sandbox Code Playgroud)

sql-server varbinary

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

索引重建期间的统计信息更新

我手头有一项任务是移动重建一个大表,以将 LOB 页面移动到 SQL Server 2017 Enterprise Edition 上的不同文件组。

我正在概念验证环境中测试脚本,我可以看到总共大约CREATE INDEX .. DROP_EXISTING=ON需要 6 小时。

CREATE UNIQUE CLUSTERED INDEX [PK_TABLE1]
ON [dbo].[TABLE1] ([Id] ASC)
 WITH (DROP_EXISTING = ON , FILLFACTOR = 100, PAD_INDEX = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, IGNORE_DUP_KEY = OFF, DATA_COMPRESSION = NONE, STATISTICS_NORECOMPUTE = OFF, ONLINE = ON, MAXDOP=2) 
ON PS_MOVE_HELPER_D59E24BC73414AA8A5FB2E5D8F93C3D8([Id] );

CREATE UNIQUE CLUSTERED INDEX [PK_TABLE1]
ON [dbo].[TABLE1] ([Id] ASC)
 WITH (DROP_EXISTING = ON , FILLFACTOR = 100, PAD_INDEX = OFF, ALLOW_ROW_LOCKS …
Run Code Online (Sandbox Code Playgroud)

sql-server filegroups index-maintenance sql-server-2017

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

SQL Server 2012标准版重建索引

我们使用SQL Server 2012标准版。有没有办法重建索引,尽量不造成数据表锁定,减少对性能的影响?

当我们重建索引时,会导致程序访问数据库超时。我希望避免或减少性能影响。

sql-server sql-server-2012 index-maintenance

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