小编Luc*_*ucy的帖子

在 SQL Server 2017 中仍然推荐内存中的锁定页面吗?

我对内存中的锁定页面进行了一些研究,仍然困扰我的问题是(我知道这确实取决于您的规范,但是)是否仍然建议在 SQL Server 2017 中锁定页面,就像在 SQL Server 2005、2008 等中一样.?

sql-server sql-server-2017

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

证书、非对称密钥或私钥文件无效或不存在

我正在尝试将数据库从不同的服务器还原到我的本地主机服务器上。那个数据库是加密的(bak 文件),所以我必须解密它,这很好,我有所有的证书文件和密码,但是出于某种原因,我仍然收到以下错误:

The certificate, asymmetric key, or private key file is not valid or does not exist; or you do not have permissions for it.

这是我正在执行的代码:

      CREATE CERTIFICATE [Certificate1] 
FROM FILE = 'C:\Location of the certs'
WITH PRIVATE KEY ( 
    FILE = 'C:\Location of the certs' ,   
    DECRYPTION BY PASSWORD = 'password'
);
Run Code Online (Sandbox Code Playgroud)

附注。我不是备份和恢复方面的专家。

sql-server t-sql restore certificate

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

如果值为 null 或为空,则不要在字符串前添加逗号

如果我的结果为空或空,我希望它不要在字符串前添加逗号。我怎样才能做到这一点?

  Update Companies 
    set address4 = concat(address4,','+ t.Eircode) 
    From companies c
    Inner Join Temptbl1 t
    on c.comp_id = t.Comp_ID
    OR address4 = ''
Run Code Online (Sandbox Code Playgroud)

更新 :

只是为了在我进行此更新时说清楚

   ,V05 TTX1 
    Waterford,X01 B234
    ,B90 E902
    Co Wexford,TD2 PVE2
Run Code Online (Sandbox Code Playgroud)

不管它是否为空,它都会添加一个逗号

我想找回的是:

    V05 TTX1 
    Waterford,X01 B234
    B90 E902
    Co Wexford,TD2 PVE2
Run Code Online (Sandbox Code Playgroud)

如果没有值,则只需添加不带逗号的字符串,在我们的例子中V05 TTX1不带,在字符串的开头

CREATE TABLE [dbo].[companies](
    [comp_id] [int] NOT NULL,
    [address4] [varchar](32) NOT NULL
)


INSERT INTO [dbo].[companies]
           ([comp_id]
            ,[address4])
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql

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

Active Directory 无法通过 SQL 服务器管理工​​作室工作

我在 SQL Server 中创建了一个组,并向其中添加了一个包含用户的 Active Directory 组。

当我尝试通过 Windows 身份验证登录时,出现以下错误:

Login failed for user 'UserName'. (Microsoft SQL Server, Error: 18456)
Run Code Online (Sandbox Code Playgroud)

但是当我只添加一个与组分开的 AD 用户时,登录没有问题。

为什么只有添加为登录名的组才能登录?

我曾尝试将 Active Directory 设置从全局类型更改为通用类型,但这并没有改变任何内容

在此处输入图片说明

这在 Windows 2016 服务器计算机和 SQL Server 2017 上。

sql-server ssms active-directory sql-server-2017

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

LIKE 条件的隐式排序是什么?

我想知道LIKE运算符是如何分类的,我有一个查询,其中有许多链式LIKE语句。以下结果在返回时如何优先排序?

AND (
  ic.COLUMN_NAME like '%Address%'
  OR ic.COLUMN_NAME like '%Email%' 
  OR ic.COLUMN_NAME like '%Phone%' 
  OR ic.COLUMN_NAME like '%Bank%'
  OR ic.COLUMN_NAME like '%Number%'
  OR ic.COLUMN_NAME like '%NAME%'   
  OR ic.COLUMN_NAME like '%Postcode%'   
Run Code Online (Sandbox Code Playgroud)

只是为了补充说明,因为我认为有些人可能没有完全理解我的问题,我将举一个例子:

假设我正在寻找地址(而不是电子邮件)并且我使用以下语句:

select * from INFORMATION_SCHEMA.COLUMNS IC
    where ic.COLUMN_NAME like '%Address%' 
Run Code Online (Sandbox Code Playgroud)

这是我要回来的:

在此处输入图片说明

我用下面的代码做同样的事情:

select * from INFORMATION_SCHEMA.COLUMNS IC
    where ic.COLUMN_NAME like '%Email%' 
    --OR ic.COLUMN_NAME like '%Email%'
Run Code Online (Sandbox Code Playgroud)

然后我得到这个:

在此处输入图片说明

这意味着在第一种情况下,我将取回地址和电子邮件地址。我知道它们只是字符串,但是我如何才能搜索地址而不取回电子邮件地址,例如email_address1address_email1web_Address_email等。我不想使用 ,where Column_Name = 'Address'因为这意味着我会错过不同的名称,例如地址 1地址 2

sql-server like

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