小编Han*_*non的帖子

单个查询从一个数据库中的多个表中获取数据

我有 36 个 Microsoft SQL Server VM,每个都有一个以 _Sec 结尾的特定数据库作为数据库名称。该数据库中有 2 个表,我需要在单个查询中从中获取数据:tblConnGroupstblConnGroupsDet.

tblConnGroups 有 3 列我需要包含在结果中

tblConnGroups.ID
tblConnGroups.GroupName
tblConnGroups.Provisional
Run Code Online (Sandbox Code Playgroud)

tblConnGroupsDet 结果中基本上有一个列。

tblConnGroupsDet.GroupID
tblConnGroupsDet.DBName
Run Code Online (Sandbox Code Playgroud)

tblConnGroups.ID是在使用的密钥tblConnGroupsDet.GroupID,然而,在tblConnGroupsID领域具有一对多的关系到GroupID在字段tblConnGroupsDet

Connection Group Name 只出现在tblConnGroups带有它的ID, 和其他信息中,但是GroupID将出现在tblConnGroupsDet带有成员数据库名称的每一行中。

USE [Name_Sec];
GO
SELECT ID,Groupname,Provisional 
from [tblConnGroups] 
ORDER BY ID ASC

ID   GroupName       Provisional
514  Name_FY0910     0
844  Name_FY1011     0
1588 NameTest_FY1516 1

USE [Name_Sec];
GO
SELECT GroupID,DBName 
FROM …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql

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

创建主键和外键时 CONSTRAINT 关键字是可选的吗?

创建新表时,示例有时会显示用CONSTRAINT关键字定义的主键和外键,有时则不显示CONSTRAINT关键字。是使用CONSTRAINT关键字为约束命名的唯一原因吗?或者您是否有其他原因选择使用或不使用此关键字?

示例 1(不带关键字):

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (ID)
);
Run Code Online (Sandbox Code Playgroud)

示例 2(使用关键字):

CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CONSTRAINT PK_Person PRIMARY KEY (ID)
);
Run Code Online (Sandbox Code Playgroud)

除了分配指定的约束名称之外,DBMS 对这两个示例的看法是否不同?我特别在考虑 SQL Server、Oracle、MySQL 和 PostgreSQL。

constraint

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

为什么从表中删除记录后磁盘上的数据文件的大小没有减少?

当我从 SQL Server 中的表中删除行时,数据库文件的大小不会变小。这是为什么?即使我从每个表中删除每一行,文件大小仍然与删除前一样大。

我有兴趣了解原因,而不是如何缩小数据库文件。

sql-server

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

基于一行返回一批行

假设我在 SQL Server 2008 中有一个这样的表:

id  |  name  |  qty
-------------------
1   |  john  |    1
2   |  bill  |    3
3   |  mary  |    2
4   |  jill  |    5
Run Code Online (Sandbox Code Playgroud)

我想查询此表并为每批返回 1 行,最多为 2。因此,查询结果如下所示:

id  |  name  |  qty
-------------------
1   |  john  |    1
2   |  bill  |    2
2   |  bill  |    1
3   |  mary  |    2
4   |  jill  |    2
4   |  jill  |    2
4   |  jill  |    1
Run Code Online (Sandbox Code Playgroud)

这可以在不使用光标的情况下整齐地完成吗?这可以使用 unpivot 吗?

顺便说一下,该 …

sql-server-2008 cursors cross-apply unpivot

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

TDE 无法加密数据库

为了加密 SQL 数据库,我运行以下命令:

CREATE CERTIFICATE <certname> ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>'
WITH SUBJECT = 'certificate subject', EXPIRY_DATE = '20291031';
go

USE <databasetoencrypt>;
GO

CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE <certname>;
GO
Run Code Online (Sandbox Code Playgroud)

尝试执行CREATE DATABASE ENCRYPTION KEY命令时,我收到此消息,但不知道该怎么做:

无法使用证书“名称”,因为其私钥不存在或不受数据库主密钥的保护。SQL Server 需要能够自动访问用于此操作的证书的私钥。

当我ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>'CREATE CERTIFICATE命令中省略期间时,它会起作用。但是,我需要创建一个受密码保护的证书。

你有什么主意吗?!谢谢你。

sql-server sql-server-2008-r2 transparent-data-encryption

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

更改 SQL Server 中的分区列

我创建了一个包含 100 多万行的分区表,并datetime在创建表时不小心将错误的列指定为分区键。

是否有一种简单的方法可以将分区列从一datetime列更改为另一列。就我而言,我们有一个列InsertedDate和一个CompleteDate,我不小心使用了第一个而不是第二个。

sql-server partitioning sql-server-2012

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

双表 postgres 不返回时间戳

我正在尝试从本地 postgres 数据库双表中选择 now():

select now() from dual;
Run Code Online (Sandbox Code Playgroud)

它不返回任何行。只打印列名now(yyyy-MM-dd HH:mm:ss.ffffff)

我错过了什么无法获得系统时间?

postgresql timestamp select system-tables

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

删除查询不删除数据

我正在运行连接到 SQL Server 2012 数据库的 Web 服务。在短时间内(大约 5 秒)内执行多个删除查询时,实际执行的查询似乎是随机的。当一次运行一个或在每次执行之间放置 0.5 秒的延迟时,它们运行完美。

查看 SQL 分析器,所有查询都显示为RPC:Completed即使它们实际上并未删除表中的行。我检查了表,数据仍然存在,然后将查询从 Profiler 复制并粘贴到 SSMS 中,这影响了一行并将其删除。

所以我假设 Web 服务运行良好,问题出在它的数据库端。探查器中有没有办法查看查询是否成功?什么可能导致这实际上不影响行?

没有触发器。仅使用不同的参数运行相同的查询。只有数据通常是按顺序变化的。刚才没有其他查询在数据库上运行。

我添加了客户端站点日志记录,如果它删除该行,它实际上会返回 1,如果它不删除该行,它会返回 0。然而,即使它出现为 0,Profiler 也会显示它已经运行了查询,但似乎没有影响它。当我通过 SSMS 运行查询时,它确实会影响该行。

未收到来自 Web 服务的任何错误,并且查询通过 SSMS 运行良好。只有在快速连续多次运行时似乎不会删除。我确实同意它很可能针对不同的行,但是当它在 SSMS 中运行正常时看不到它是如何发生的。

表结构和查询

CREATE TABLE dbo.ContractDates2HumanAssets
(
    iContractDate2HumanAssetID int IDENTITY(1,1) NOT NULL,
    iContractDateID int NOT NULL,
    iHumanAssetID int NOT NULL,
    cCategory nvarchar(256) NOT NULL,
    cHR_x0020_ID nvarchar(256) NOT NULL,
    cCD_x0020_ID nvarchar(256) NOT NULL,
     CONSTRAINT PK_ContractDates2HumanAssets PRIMARY KEY CLUSTERED 
    (
        iContractDate2HumanAssetID ASC
    ) WITH (PAD_INDEX = …
Run Code Online (Sandbox Code Playgroud)

sql-server delete profiler

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

如何识别默认邮件配置

在 SQL Server 中,我们可以设置多个电子邮件配置,其中只有一些设置为默认值。

我尝试使用以下查询来获取帐户列表:

select *
from msdb.dbo.sysmail_profile p 
    join msdb.dbo.sysmail_profileaccount pa on p.profile_id = pa.profile_id 
    join msdb.dbo.sysmail_account a on pa.account_id = a.account_id 
    join msdb.dbo.sysmail_server s on a.account_id = s.account_id
Run Code Online (Sandbox Code Playgroud)

有什么方法可以识别默认邮件配置文件吗?

sql-server sql-server-2012 database-mail

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

CUBE 和计算维数

如果呈现的数据4-dimension中每个维度都依赖于分层的 3 级聚合,例如(国家、城市、街道),那么我们可以将其总结为4096多种方式!

我们知道对于具有n维度的多维数据集,其中没有维度是分层的,我们有2^n汇总方式,但在这种情况下,每个维度都有分层的 3 级聚合4^4=256方式。

为什么上面的说法提到有4096办法呢?

如果由于我的英语用法缺陷而无法很好地说明我的问题,请参阅:

在此处输入图片说明

这是我的公式,但是我的答案与 4096 非常不同!

在此处输入图片说明

oracle database-design sql-server olap cube

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