小编Joh*_* N.的帖子

为 EmpName 返回一行

我的表中可能有也可能没有相同的员工姓名。问题是我无法知道 Table1 是否会包含更多名称,或者 Table2 是否会包含更多名称,所以我认为联合可以解决这个问题。但是,正如您在下面的语法中看到的那样,它会生成“C”的行,因为它存在于两个表中。这是我想要的输出

empName | TotalSW | TotalSNT  
--------+---------+---------
A       |       1 |       0
B       |       1 |       0
C       |       1 |       1
x       |       0 |       1
z       |       0 |       1
Run Code Online (Sandbox Code Playgroud)

使用下面的 DDL 如何编写查询以生成此输出?

Create Table #Test1
(empName varchar(100), swas varchar(100))

Create Table #Test2
(empName varchar(100), swont varchar(100))

Insert Into #Test1 (empName, swas) VALUES
('A', 'res1'), ('B', 'tim1'), ('C', 'run34')

Insert Into #Test2 (empName, swont) VALUES
('C', 'er12'), ('z', 'nn12'), ('x', '23rw')


Select empName, TotalSW …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2008-r2

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

检查 MySQL 中是否存在记录的最佳方法

我有一个程序应该检查特定日期范围内的记录是否存在,如果存在则获取记录,否则获取最后 20 条记录。

为此,我必须多次编写查询,一次用于检查存在性,然后获取相同的记录或获取没有 where 子句但有限制的记录。

查询在程序内部是这样的

set @cnt = (select count(*) from table where date_field between date1 and date2) ; 
if @cnt > 0 then 
    select * from table where date_field between date1 and date2 ; 
else 
    select * from table order by date_field desc limit 0,20 ; 
end if ;
Run Code Online (Sandbox Code Playgroud)

有什么办法可以在单个查询中完成,因为我的查询有太多连接并且太复杂,可能需要一些时间,所以如果我调用它两次,获取时间会增加。

mysql

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

链接服务器到 Azure 错误:“访问远程服务器被拒绝,因为不存在登录映射。”

我正在设置从本地 SQL Server 到 MS Azure 上的数据库的链接服务器(见下文)。当非管理员用户通过链接服务器查询 Azure 数据库时,他们会得到:

Msg 7416, Level 16, State 2, Line 1 访问远程服务器被拒绝,因为不存在登录映射。

关于如何让这个工作的任何想法?

EXEC sp_addlinkedserver
@server='LincServer',                              
@srvproduct='',     
@provider='sqlncli',
@datasrc='myAzureDB.database.windows.net',
@location='',
@provstr='Encrypt=Yes;TrustServerCertificate=No;User ID=myAzureID',
@catalog='MyDB'

EXEC sp_addlinkedsrvlogin 
@rmtsrvname = 'LincServer',
@useself = 'false',
@rmtuser = 'myAzureID',
@rmtpassword = '########'
GO
Run Code Online (Sandbox Code Playgroud)

sql-server linked-server azure-sql-database

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

收缩 ibdata1 和 ib_logfile0

我想减小MySQL 服务器 5.7 上ibdata1ib_logfile0文件的大小。但是,我不想激活该innodb_file_per_table选项。

在不激活的情况下减小上述文件大小的最佳选择是innodb_file_per_table什么?

mysql configuration mysql-5.7

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

支持 Amazon RDS 上的 libprotobuf-c

我在 Amazon RDS 上创建了一个 PostgreSQL 10 实例,并在我的数据库中启用了 PostGIS 2.4 扩展。我想测试 Amazon RDS 作为动态矢量切片服务器的性能。

这取决于在启用 PostGIS 的数据库中使用 ST_AsMVT 和 ST_AsMVTGeom 命令的能力。

这些函数需要在libprotobuf-c托管 PostgreSQL 实例的系统上安装库。

Amazon RDS 实例似乎不支持libprotobuf-c并且 Amazon RDS 上的 PostgreSQL/PostGIS 无法使用 PostGIS 2.4 中引入的矢量切片功能。

有谁知道libprotobuf-c在 Amazon RDS 上启用支持的方法?

postgis amazon-rds

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

页眉中还存储了哪些其他信息

SQL Server 数据库页的大小定义为 8192 字节。有一些头信息据说大小为 96 字节。

如果您曾经尝试创建一个包含超过 8053 个字节的列定义的表,那么您将看到错误消息:

Creating or altering table 'Generated_Data_GUID' failed because the 
minimum row size would be 8061, including 7 bytes of internal overhead. 
This exceeds the maximum allowable table row size of 8060 bytes.
Run Code Online (Sandbox Code Playgroud)

以下是一个示例表 DDL:

CREATE TABLE [dbo].[Generated_Data_GUID](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [GUID] [uniqueidentifier] NOT NULL,
    [SEQGUID] [uniqueidentifier] NOT NULL,
    [Data1] [char](4000) NULL,
    [Data2] [char](4000) NULL,
    [Data3] [char](9) NULL,
    [EntryDate] [datetime2](7) NULL
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

通过以上的DDL如果我改变了列的列定义Data3char(10),那么我会打的错误消息。

每个列类型的字节大小如下: …

sql-server sql-server-2008-r2 sql-server-2012 sql-server-2014 sql-server-2017

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

是否有使用时间戳作为主键的策略?

大多数情况下,我们使用整数序列作为主键来保持表中行的唯一性。为此,我们不能使用时间戳而不是整数吗?该策略是否有任何缺陷,因为我认为机器不能同时“同时”做两件事......对吗?

我正在处理一个在键中包含大量休眠序列的数据库,所以我想使用时间戳作为解决方案。在实践中是否有任何类似的方法可以与任何数据库一起使用?要是知道就好了。

编辑:我要问的是,由于对我们(人类)来说,没有两个时刻是相同的,这对计算机也适用吗?我知道计算机通过某些晶体的振动来跟踪时间(不确定它可以测量多小的时间)。

在数据库中,我有一些表,除了时间(审计跟踪)外没有主键适用,并且指定一个序列(hibernate_sequence)将数字增加到极高的程度,这使得使用其他表不方便,因为它会影响所有表序列作为主键。

因此,如果 PostgreSQL 可以保证不会在同一时间戳上发生两次插入/更新操作,那么我可以将其用作主键,如果不能,则显然我不能使用此解决方案。

基本问题是:PostgreSQL的规定,任何两个记录将被插入/同时更新任何保证(通过某些方法或配置)“时间”

谢谢

postgresql primary-key timestamp

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

AG 中记录发送队列大小和重做队列大小

我正在尝试找出监控这两个事件的方法

  1. 记录发送队列大小 - 我可以在 perfmon 中看到这一点

  2. 重做队列大小 - 我可以在 dmv 中看到,但在 perfmon 计数器中看不到

有没有什么方法可以使用 perfmon,以便我可以计算重做队列大小,即使计数器在 perfmon 中不可用?

另外,我发现这些事件在属于数据库镜像的一部分时会记录在 Windows 事件查看器中。但现在使用 AG,如何在 Windows 事件查看器中记录这 2 个超出特定范围的值?

编辑

我所说的警报是指我们在 AG 中是否有一些内容,如此处所示,作为从数据库镜像看到的消息?

performance sql-server availability-groups sql-server-2017

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

SQLSTATE[08006] [7] FATAL:数据库系统处于恢复模式

我对 PostgreSQL 和 PostGIS 有一些问题。

在使用特殊光栅文件上的一些坐标运行以下查询后,我收到错误。

直到上周,它都运行良好。

查询是:

select (ST_ValueCount(ST_Union(ST_Clip(r.rast,r.geom,true),1,'area_sum'))).* from (select * ,(SELECT (ST_SetSRID(ST_GeomFromGeoJSON('{ "type": "Polygon", "coordinates": [[[47.48034200000001,39.13347600000003],[47.49611600000003,39.114525000000015],[47.510418000000016,39.10534899999999],[47.52599799999996,39.08644900000013],[47.54254200000014,39.05803700000013],[47.53256200000004,39.0290940000001],[47.52131200000002,39.00986000000012],[47.49699400000003,38.99015700000001],[47.498607000000106,38.97137000000009],[47.52537600000005,38.96289400000006],[47.52689400000003,38.94405700000004],[47.54134800000014,38.92563300000012],[47.529907000000094,38.906041000000016],[47.519521,38.87627100000009],[47.521041000000025,38.85683000000006],[47.54817600000001,38.83865400000002],[47.58924400000001,38.80162500000006],[47.59110200000009,38.762773000000095],......]]}'), 4326)))as geom from public.layer where filename in ( 'myrasterfile.tif') ) as r where ST_Intersects(r.rast,r.geom))
Run Code Online (Sandbox Code Playgroud)

错误是:

SQLSTATE[08006] [7] FATAL:  the database system is in recovery mode
Run Code Online (Sandbox Code Playgroud)

为什么我的 PostgreSQL 实例在此查询过程中进入恢复模式?

我应该怎么办?

postgresql php postgis

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

查询存储需要很长的时间来加载持续时间

我正在运行查询存储以使数据库性能更好。到目前为止,它一直工作正常。当我尝试加载最后一天的热门持续时间时,我花了 26 分钟来加载屏幕。

我运行的 SQL 版本是: Microsoft SQL Server 2017 (RTM-CU27) (KB5006944) - 14.0.3421.10 (X64) Oct 14 2021 00:47:52 版权所有 (C) 2017 Microsoft Corporation Standard Edition (64-bit) o​​n Windows Server 2019 Datacenter 10.0(内部版本 17763:)(虚拟机管理程序)

QS 中弹出查询:

/*
This query text was retrieved from showplan XML, and may be truncated.
*/

SELECT TOP (@results_row_count)
    p.query_id query_id,
    q.object_id object_id,
    ISNULL(OBJECT_NAME(q.object_id),'') object_name,
    qt.query_sql_text query_sql_text,
    ROUND(CONVERT(float, SUM(rs.avg_duration*rs.count_executions))*0.001,2) total_duration,
    SUM(rs.count_executions) count_executions,
    COUNT(distinct p.plan_id) num_plans
FROM sys.query_store_runtime_stats rs
    JOIN sys.query_store_plan p ON p.plan_id = rs.plan_id
    JOIN …
Run Code Online (Sandbox Code Playgroud)

performance sql-server query query-store sql-server-2017

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