小编Han*_*non的帖子

从分区表中删除主键约束是否会破坏分区?

我们有一个按日期列分区的表。表的主键是此日期列和其他 4 个列的组合键。

我们正在考虑从该表中删除主键约束并简单地创建一个新的非聚集索引。

由于分区列是主键的一部分,如果我们删除主键约束,分区是否会受到影响?

sql-server-2008 sql-server

6
推荐指数
1
解决办法
1886
查看次数

安装 PostGIS v2 for PostgreSQL v9.2

我已经安装了最新的稳定版 PostgreSQL v9.2,我想安装 PostGIS v2 扩展。

我已经找了3天了,但找不到。

然而,我确实找到了 PostGIS v2 for PostgreSQL v9.1,感谢这个网站:http : //linfiniti.com/2012/05/installing-postgis-2-0-on-ubuntu/

我是 Ubuntu 新手,我更习惯 Windows。

PostgreSQL v9.1 包不起作用。我在哪里可以获得正确的包裹?

postgresql ubuntu postgis

6
推荐指数
1
解决办法
2013
查看次数

从另一个数据库查看查询表的 SELECT 权限

SQL Server 2008 R2 SP1

我的公司使用具有多种自定义功能的 Great Plains (GP) 财务系统。我们的 GP 增值经销商 (VAR) 已在名为DYNCUSTOM.

DYNCUSTOM数据库一种观点认为,仅仅是SELECT * FROM在GP公司数据库(称为表PARTS)。一位在尝试在此视图上进行选择时遇到问题的用户联系了我。

他得到的错误:

Msg 229, Level 14, State 5, Line 2
SELECT permission denied on object 'BM010415', database 'PARTS', schema 'dbo'
Run Code Online (Sandbox Code Playgroud)

我查看了他的登录名是如何映射的,他在数据库中有一个数据库用户,该用户DYNCUSTOM属于granted select视图中的数据库角色。

但是,他在数据库中没有数据库用户PARTS

通常,视图的目的是为了在不公开对基础表的访问的情况下授予视图的选择权限。但是,对于 SQL Server,如果视图跨数据库,它是否会更改正在使用的安全上下文?因此,用户是否还需要数据库中的数据库用户PARTS以及授予对基础表的选择访问权限?

sql-server-2008 security

6
推荐指数
1
解决办法
6740
查看次数

如何自动将堆转换为聚集索引?

我在我们的一个生产数据库中有大约 40 个表,由于各种原因,这些表不是使用聚集索引创建的。

转换这些堆的最佳自动化方法是什么?

由于我天生是一名开发人员,我真的不想手动执行此操作。

我开始为此创建一个过程,如为什么此游标以不正确的顺序产生结果中所述?,然而我对那篇文章的回应让我怀疑我在做什么。

sql-server-2005 sql-server clustered-index heap

6
推荐指数
1
解决办法
1713
查看次数

如果未启用登录审核,如何监控数据库使用历史?

我在多台服务器上有许多似乎不再使用的数据库。我想删除这些数据库,但我不确定它们是否真的在使用中。

我找不到它们的所有者,没有与它们相关联的流程,而且几个月来没有任何内容写入表中。

在今天之前未启用登录审核。

服务器版本范围从 2005 年到 2014 年,但其中大部分都在 2008 R2 上。

有没有办法检查这些数据库的登录历史记录,回溯 6 个月,只是在使数据库脱机之前与这些用户仔细检查?

我得到了一个查看索引使用历史的建议;有人能够为此共享脚本吗?

sql-server logins

6
推荐指数
1
解决办法
3205
查看次数

有什么方法可以监视 SQL Server 2012 中 xp_cmdshell 的执行吗?

我的任务是评估允许第三方供应商在 SSMS 中远程调试其查询所涉及的安全风险。这意味着用户的帐户必须是 sysadmin 固定角色。虽然这意味着用户出于所有意图和目的“拥有”SQL Server 实例,但我们已将该实例设置为特定于该供应商的服务帐户。我只剩下主要评估使用 xp_cmdshell 可以造成的损害。

我知道系统管理员几乎可以撤消为监视该活动而实施的任何内容,但是如果有办法监视它(也许使用扩展事件?)和/或使用日志功能,它将为我们提供额外的安全级别。

sql-server sql-server-2012

6
推荐指数
1
解决办法
3700
查看次数

将行转换为包含列名的串联字符串

我有一张几百列宽的桌子。有没有办法将每一行转换为包含列标题的单个串联字符串,而不必列出查询中的每一列?

我这样做是因为列代表事件报告中的字段。我将它们重新组合在一起,以便人们可以以合乎逻辑的方式阅读报告。

我已经通过查询完成了其中的一些工作,但是为每一列都做起来很费力,而且似乎容易出错。

这是一个简短的片段,显示以我需要的格式连接的三列,在逐列方法中完成:

SELECT 
 Concat( 
   IIf(Id IS NULL, Null, Concat('Id: ' , [Id] , '\n') )  , 
   IIf(StandardClientId IS NULL, Null, 
     Concat('StandardClientId: ' , [StandardClientId] , '\n') )  , 
   IIf(ClientName IS NULL, Null, 
     Concat('ClientName: ' , [ClientName] , '\n') ) 
 )  AS ReportLine
FROM dbo.DataDecoded; 
Run Code Online (Sandbox Code Playgroud)

谢谢

sql-server pivot

6
推荐指数
3
解决办法
2480
查看次数

是否可以在没有 UNION 的情况下组合 7 个源?

我有一个源表,它看起来基本上是这样的:

  • 员工代码
  • 周开始日期
  • 工作时间Day1
  • 工作时间Day2
  • 工作时间Day3
  • 工作时间Day4
  • 工作时间Day5
  • 工作时间Day6
  • 工作时间Day7

实际的表有类似于 500 个编号的列(并没有真正计算它们 - 有各种各样的编号为 1-7 的字段,然后是另一个编号为 1-25,乘以 7 的字段)每个工作日(不,这不是我的设计) ,目前大约有 38,600 行(每周增加)。

我有一个 SSIS 包,它试图标准化这些数据......目前看起来像这样:

联合所有

每个“源”从同一个源表中选择一组编号的列,UNION ALL 组件将 7 个源合并为一个,从而产生大约 258,900 行。

工作流的其余部分添加一些计算列,查找代理键(例如EmployeeCode用于查找EmployeeId,然后计算日期并用于查找 a TimeId),然后“修改”的行得到更新和“新的”被插入到规范化表中;未更改的行最终无处可去。

有没有更好的方法(例如减轻内存压力)来规范化源数据?

normalization sql-server ssis sql-server-2014

6
推荐指数
1
解决办法
166
查看次数

SQL:在数据中存储格式

我一直教导将格式化数据存储在表格中是不正确的。例子包括:

+----------------+----+
| 数据 | 好的 |
+----------------+----+
| 0370101234 | ? |
+----------------+----+
| 03 7010 1234 | |
+----------------+----+
| (03) 7010 1234 | |
+----------------+----+

(为什么不支持表格?!)

数据是一个澳大利亚电话号码,通常有 10 位数字,包括区号。

包括格式间距或字符会引入歧义,因此更难排序或搜索。

问题是:标准或关系理论中有没有涵盖这个问题的内容?

编辑

这不是关于电话号码的问题。我用应该以最简单的形式存储的数据说明了一个点,即使它是用格式化字符显示的。

其他示例包括$显然从未与货币值一起存储的符号,以及有其自身问题的千位分隔符。

normalization database-design

6
推荐指数
1
解决办法
1285
查看次数

SQL Server Always Encrypted 可以用于临时表吗?

我正在尝试确定是否可以对临时表(Windows 2016 上的 SQL Server 2016 SP1 Enterprise)中的列使用 Always Encrypted。我试过如下:

CREATE TABLE #listofdates (compare_dt datetime2(7) encrypted with (
    COLUMN_ENCRYPTION_KEY = [ColEnc1]
    , ENCRYPTION_TYPE = Deterministic
    , ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'
    ) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

但是,我收到错误:

消息 33293,级别 16,状态 8,第 3 行
找不到列加密密钥“ColEnc1”,因为它不存在或您没有权限。

我认为此错误具有误导性,因为如果我只是将表名替换为#listofdates另一个没有前导 # 的名称(因此从临时表切换到普通表),则该语句有效。

MS 站点上列出对 Always Encrypted 的限制/限制的部分没有提到临时表。

sql-server temporary-tables sql-server-2016 always-encrypted

6
推荐指数
1
解决办法
1185
查看次数