我有两个表:
这些公司允许其员工为其他公司工作。所以一个员工可以在很多公司工作,一个公司可以有很多员工(多对多关系)。
假设我有 3 名员工和他们工作的公司,分别具有一天的开始和结束时间。
employee_name | company_name | hours they work |
Akash A 09:00 - 11:00
B 12:00 - 02:00
C 04:00 - 07:00
Sunny D 09:00 - 11:00
C 12:00- 04:00
D 05:00 - 07:00
Vishal B 09:00 - 12:00
A 12:00 - 05:00
Run Code Online (Sandbox Code Playgroud)
是否可以重载 sql server 函数?是标量,如 ltrim,还是聚合函数,如计数?
即使这是一个非常非常糟糕的主意。是否可以?
有点重复T-SQL 用户定义的函数重载?我会说它不是 100% 重复,因为那是 2005 年的版本。也许这已经改变了?
我遇到了慢查询问题,这是由计划程序检查每个继承的表而不是仅具有约束的表引起的。
我有一个名为“search_result”的 0 行表。该表有几个继承的表,它们具有基于“极化”的不同约束,我们所有的数据都驻留在该表中。例如:
CREATE TABLE search_result_positive
(
CONSTRAINT search_result_positive_polarization_check CHECK (polarization = (1))
)
INHERITS (search_result);
CREATE TABLE search_result_negative
(
CONSTRAINT search_result_negative_polarization_check CHECK (polarization = (-1))
)
INHERITS (search_result);
CREATE TABLE search_result_unpolarized
(
CONSTRAINT search_result_unpolarized_polarization_check CHECK (polarization IS NULL)
)
INHERITS (search_result);
Run Code Online (Sandbox Code Playgroud)
例如,当我使用“WHEREpolarization = 1”执行查询时,查询规划器将显示它只检查了“search_result_positive”:表,这是所需的行为。
但是,当查询是“WHEREpolarization IS NULL”时,它会检查每个表,花费大量时间。以下是“search_result_positive”的示例:
SELECT "search_result".* FROM "search_result" WHERE (polarization = 1) ORDER BY published_on DESC LIMIT 20;
Limit (cost=0.44..17.65 rows=20 width=2027) (actual time=3.638..3.666 rows=20 loops=1)
-> Merge Append (cost=0.44..249453.67 rows=289872 width=2027) (actual time=3.637..3.663 rows=20 …
Run Code Online (Sandbox Code Playgroud) 我正在使用由脚本( Osm2pgsql )创建的 postgres 数据库。它创建了一些类型为_text
的二维数组的字段text
。我试图理解为什么它不只是创建一个text[][]
字段,以及为什么这种类型存在于 postgres 中。
我可以在文档中找到这个链接,其中写着:
当您定义新的基本类型时,PostgreSQL 会自动提供对该类型数组的支持。数组类型通常与基类型具有相同的名称,并在前面添加下划线字符 (_)。
但我不明白为什么当文本是 postgres 的内置类型时它使用这个“下划线”类型名称?
我借用了一些关于如何压缩和解压缩诊断代码字符串的代码,以便为我的数据仓库构建桥表。它运作良好。但是,我只是不明白它是如何进行解压缩的。这是以下代码的 SQL Fiddle
create table dimDiagnosisGroup (dxGroupKey int, dxCodeList nvarchar(1024))
insert into dimDiagnosisGroup
values (1,'042, 070.70, 722.10'),
(2,'042, 070.70, 780.52, 496, 716.90, 581.9'),
(3,'042, 070.70, 782.1, V58.69'),
(4,'042, 070.70, 782.3, V58.69')
WITH XMLTaggedList AS (
SELECT dxGroupKey,
CAST('<I>' + REPLACE(dxCodeList, ', ', '</I><I>') + '</I>' AS XML)
AS Diagnosis_Code_List
FROM dimDiagnosisGroup
)
SELECT dxGroupKey,
ExtractedDiagnosisList.X.value('.', 'VARCHAR(MAX)') AS dxCodeList2
FROM XMLTaggedList
CROSS APPLY Diagnosis_Code_List.nodes('//I') AS ExtractedDiagnosisList(X)
Run Code Online (Sandbox Code Playgroud)
我理解XMLTaggedList部分很好。我不明白的是交叉应用到ExtractedDiagnosisList(X),然后是ExtractedDiagnosisList.X.value('.', 'VARCHAR(MAX)')。
当我将鼠标悬停在 select 语句中的ExtractedDiagnosisList 上时,SSMS …
我试图找出一种方法,让我们在源代码控制下编写的所有随机 SQL 脚本。我已经在数据库项目中使用 SSDT。这不适用于此类脚本。它适用于我们随时间运行的所有其他随机查询。在我们将它们放入存储过程之前。或者其他不适合作为 SP 的脚本。
如何使用 Visual Studio 将我的非 SSDT Sql 脚本置于源代码控制之下?
我有安装了ubuntu 18.04 服务器的VM 。我已经从 repo安装了postgres 10。
默认安装。我在 postgres.conf 中进行了一些与连接计数相关的更改,并在 pg_hba.conf 中进行了与连接安全相关的更改。
安装目录都是默认的,包括数据目录。
服务器正在运行。我能够创建数据库并从 java 客户端访问它。
但是当我从同一个 VM 启动 psql 时,它会引发以下错误。
Error: Invalid data directory
Run Code Online (Sandbox Code Playgroud)
只是没有任何参数的 psql 也会出现此错误。
人们在尝试更改数据目录时遇到了这个错误,这对我来说并非如此。数据目录是默认目录,它由 postgres 用户拥有。
ubuntu@ubuntu:~$ ls -l /var/lib/postgresql/10/
total 4
drwx------ 20 postgres postgres 4096 Jun 12 02:54 main
Run Code Online (Sandbox Code Playgroud)
知道可能是什么原因或我应该在哪里查找 psql 客户端的详细错误吗?
我已经使用 Ola Hallengren 的脚本几年了,最近升级到 MSSQL2017 允许我开始测试加密备份。在有人问之前:是的,主密钥和加密证书已备份并存储在我们的密码管理器中。
我遇到了以下参数组合的问题:
EXECUTE [OlaHallengren].[DatabaseBackup]
@Databases = 'SYSTEM_DATABASES'
,@Directory = N'\\<SHARE>\SQLBackup\Daily'
,@BackupType = 'FULL'
,@Verify = 'Y'
,@CheckSum = 'Y'
,@Encrypt = 'Y'
,@EncryptionAlgorithm = 'AES_256'
,@ServerCertificate = 'DBBackupEncryptCert<SERVERNAME>'
,@LogToTable = 'Y'
Run Code Online (Sandbox Code Playgroud)
备份运行良好,但验证没有:
Command: RESTORE VERIFYONLY FROM DISK = N'\\<SHARE>\SQLBackup\Daily\<SERVER>\master\FULL\...
Process Exit Code 1.
The step failed.
Run Code Online (Sandbox Code Playgroud)
Ola Hallengren 的脚本无法打开主密钥似乎是一个问题,因为这不起作用:
RESTORE VERIFYONLY FROM DISK = N'\\<SHARE>\SQLBackup\Daily\<SERVER>\master\FULL\<SERVER>_master_FULL_<DATE>_<TIME>.bak'
Run Code Online (Sandbox Code Playgroud)
但这确实:
use master;
OPEN MASTER KEY DECRYPTION BY PASSWORD = '<PASSWORD>';
RESTORE VERIFYONLY FROM DISK = N'\\<SHARE>\SQLBackup\Daily\<SERVER>\master\FULL\<SERVER>_master_FULL_<DATE>_<TIME>.bak'
CLOSE MASTER KEY …
Run Code Online (Sandbox Code Playgroud) 我认为我对精度与比例的理解可能不正确,因为以下示例产生的值对我来说没有意义。decimal(32, 14)
轮结果到6位小数,而decimal(18, 14)
发到19我的理解小数的是decimal(p, [s])
,这里p
是数字的总数,s
是数字的小数点(IG后的数字,decimal(10, 2)
会导致8位,左侧是小数和 2 位数字)。这不正确吗?
我创建了一个小例子来说明看似奇怪的行为:
--------------------
-- Truncates at pipe
-- 1.043686|655...
--------------------
declare @dVal1 decimal(32, 14) = 10
declare @dVal2 decimal(32, 14) = 9.581419815465469
select @dVal1 Val1, @dVal2 Val2, @dVal1 / @dVal2 CalcResult
----------------
-- Most accurate
----------------
declare @dVal3 decimal(18, 14) = 10
declare @dVal4 decimal(18, 14) = 9.581419815465469
select @dVal3 Val3, @dVal4 Val4, @dVal3 / @dVal4 CalcResult
Run Code Online (Sandbox Code Playgroud)
那么问题来了,我缺少什么来理解这一点?我读过的文章和 msdn 博客似乎没有提供清晰的信息(至少对我的思考过程而言)。有人可以向我解释为什么更高的精度似乎会导致比例损失?
当我尝试安装 SQL Server Management Studio 版本 17.0 时,收到以下错误消息:
“无法安装 SQL Server Management Studio (SSMS) v17.0 的通用 (GA) 版本,因为您的计算机上安装了 SSMS 的预发布版本。从“添加/删除程序”中卸载 SSMS 的预发布版本' 在控制面板中重新运行 SSMS 安装程序。”
我卸载了预发布版本,但仍有问题。当我查看日志文件时,导致问题的条件是
[1118:18D4][2017-05-09T16:05:55]i052:条件'NOT RCBitsInstalled OR (RCBitsInstalled > "2016.140.17030.0" OR RCBitsInstalled < "2016.140evaluate.0.0")
但是进一步查看日志文件,该值似乎很好。
[1118:18D4][2017-05-09T16:05:55]i000:将版本变量“RCBitsInstalled”设置为值“2016.140.16000.64”
任何人都知道解决这个问题的方法吗?谢谢!
我最近被问到这个问题,但我在互联网上找不到有关此问题的答案或任何详细解释。任何人都可以解释或提供一个参考链接来解释处理用户登录请求的 SQL Server 体系结构的组件吗?
提前致谢!!
我们可以备份 tempdb 吗?
如果是,那么如何?
如果没有,那么为什么 SSMS 中有一个用于还原的选项?
我们目前有一个用于报告的大型数据库。这包含多个表,其中只有一些是相关的。
例如,我们有一个部门的 5 个表,另一个部门的 2 个表,等等。数据可以在部门之间流动,但表之间没有结构链接——没有外键关系,没有重复的表。我们还有一些查找表,这些表由填充每个部门中的大量表的过程使用 - 日历、邮政编码,诸如此类。
这是作为单个大型数据库的最佳选择,还是分离为具有主题链接表的较小数据库?这些表会增加,并且随着新部门的建立,它们的数量也会增加。随着时间的推移,我们会注意到任何退化,还是小到微不足道?
任何有关阅读内容的建议或指示都非常感谢。
sql-server ×9
postgresql ×3
functions ×2
array ×1
backup ×1
cross-apply ×1
cte ×1
datatypes ×1
decimal ×1
encryption ×1
git ×1
many-to-many ×1
mysql ×1
optimization ×1
ssms ×1
ubuntu ×1