小编IT *_*her的帖子

SET DATEFORMAT 问题

我对SET DATEFORMAT命令有一些疑问。

1)该命令是否只用于插入和更新日期格式,不影响该列的日期格式?或者这也会在插入值后影响我的表吗?

2)我尝试使用以下命令(用于日期数据类型)并得到类似This session's YDM date format is not supported when converting from this character string format to date, time, datetime2 or datetimeoffset. Change the session's date format or provide a style to the explicit conversion. . 为什么日期数据类型会出现错误(对于 smalldatetime 它的工作原理如链接所示)?

CREATE TABLE #tempTable (DateFormatSample DATE)
SET DATEFORMAT MDY
INSERT INTO #tempTable
VALUES ('09/28/2007')
SET DATEFORMAT YDM
INSERT INTO #tempTable
VALUES ('2007/28/09')
SET DATEFORMAT YMD
INSERT INTO #tempTable
VALUES ('2007/08/28')
SELECT DateFormatSample
FROM #tempTable
DROP TABLE #tempTable …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2008-r2 date-format

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

如何跨多个表创建唯一(索引)约束?

有没有办法在 SQL Server 数据库中的表之间创建唯一索引?我有两个表,表 A 和表 B。因为我有一个名为 ID 的列,我想让这些 Id 列唯一(组合表 A 和 B 的 Ids )

我怎样才能做到这一点 ?

index sql-server unique-constraint

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

带有不区分大小写标记的 XML 查询 - 这是最好的查询

我之前问过有关不区分大小写标记的 XML 查询的问题,我也找到了解决方案。但我也找到了一些其他的解决方案。所以桌子就像

DECLARE @myTable TABLE ( yourXML XML )  

INSERT INTO @myTable SELECT '<z><a><b>1</b><c>2</c></a></z>'
INSERT INTO @myTable SELECT '<Z><A><b>1</b><c>2</c></A></Z>' 
Run Code Online (Sandbox Code Playgroud)

以下所有解决方案都返回我想要的(不区分大小写的标签)

-----Solution 1----------

SELECT * FROM @myTable WHERE ( [yourXML].exist('for $x in /*[lower-case(local-name(.)) = "z"]/*[lower-case(local-name(.)) = "a"] where  ( ($x/*[lower-case(local-name(.)) = "b"][1]) = 1 )  return $x')>0 ) 

-------------------------
-----Solution 2----------

SELECT * FROM @myTable
WHERE
(CONVERT(XML,LOWER(CONVERT(VARCHAR(MAX),[yourXML]))).exist('for $x in /z/a where  ( ($x/b[1]) = 1 )  return $x')>0 )

-------------------------
-----Solution 3----------

SELECT * FROM @myTable WHERE 
([yourXML].exist('for …
Run Code Online (Sandbox Code Playgroud)

xml sql-server sql-server-2008-r2 xquery

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

当源和目标都有数据和标识列时,SQL 导入数据

我正在使用导入和导出数据选项将数据从一个数据库导入到另一个数据库。两个数据库具有相似的表结构。所有表都有主键,即标识元素(自动加 1)。源表和目标表都有行。

现在,当我导入数据时,我收到类似的错误 Failure inserting into the read-only column

所以我启用了enable identity insert复选框并尝试导入数据。在这种情况下,我得到如下所示的错误

Copying to [dbo].[Misc_Data] (Error)
Messages
Error 0xc0202009: Data Flow Task 1: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005.
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80004005  Description: "The statement has been terminated.".
An OLE DB record is available.  Source: "Microsoft SQL Server Native Client 10.0"  Hresult: 0x80004005  Description: "Violation of PRIMARY KEY constraint …
Run Code Online (Sandbox Code Playgroud)

sql-server ssms ssis sql-server-2008-r2 import

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

在 SQL Server 中全局保存一个变量它自己并在需要时使用它

我们正在使用ENCRYPTBYPASSPHRASE来加密某些数据库的某些列。每次我们需要使用 DECRYPTBYPASSPHRASE 传递密码时,都要解密这些值。

所以我计划创建一个如下所示的存储过程

CREATE function [dbo].[SQLEncrypt](@str varchar(max)) returns varchar(max) 
as 
 begin
 declare @test nvarchar(max)
 set @test=''


    set @test =   convert(varchar(MAX),DECRYPTBYPASSPHRASE ('password',@str))



 return @test
END

GO
Run Code Online (Sandbox Code Playgroud)

我可以使用如下所示的这个存储过程来解密一列

----usgae---

select master.dbo.SQLEncrypt(columnname) from tablename--
-----------------
Run Code Online (Sandbox Code Playgroud)

现在我打算将此密码全局存储在 SQL 服务器中的某个位置(不知道是否可能),然后在存储过程中使用它。无论如何都可以做到吗?我也可以对用户隐藏密码吗?

sql-server stored-procedures t-sql sql-server-2008-r2

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

修剪 MS SQL Server 中 xml 列中的值

我有一个带有 XML 列的数据库。我正在尝试更新(修剪) xml 列的 xml 值。我在 Windows、SQL Server 2008 Express 上运行。

我没有找到任何直接在 Xquery 中修剪的方法,所以我尝试通过选择该值。这是 SQL

select RTRIM(LTRIM(col2.value('(/Root/Row/Rowid/text())[1]','varchar(20)')))
from   dbo.T1
Run Code Online (Sandbox Code Playgroud)

但是现在我不知道如何更新这个 xml 值。

有没有办法直接修剪xml值?如果不是,我该如何修剪价值?

我不是要更新表中的单行,而是要修剪表中所有行的 xml 值

sql-server-2008 xml sql-server xquery trim

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

涉及 XML 列的两个类似查询的相对成本

我有两个查询,如下所示,它们做同样的事情。这xmlcolumn是一个数据类型为 XML 的列。我使用这些查询在 XML 列中的任何位置搜索字符串。

我检查了这两个查询的执行计划,发现第一个查询的 I/O 成本和子树成本低于第二个。我原以为第一个会在使用cast和 时具有更高的成本charindex,但事实并非如此。

为什么它的成本更低?

第一个查询:

SELECT * 
FROM mytable
WHERE ( Charindex('abc',CAST([xmlcolumn] AS VARCHAR(MAX)))>0 ) 
Run Code Online (Sandbox Code Playgroud)

第二个查询:

SELECT * 
FROM mytable t1
WHERE t1.[xmlcolumn].exist('//*/text()[contains(.,"abc")]')=1
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008 xml execution-plan

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

查询在 xml 中搜索子字符串

我使用下面的查询来搜索整个 xml 中的子字符串(包括节点名称和节点值)

SELECT * 
FROM tablename
WHERE ( Charindex('abc',CAST([xmlcolumn] AS VARCHAR(MAX)))>0 ) 
Run Code Online (Sandbox Code Playgroud)

我想要一个性能比这更好的替代查询。所以请推荐一些。详情如下: 表:

CREATE TABLE [dbo].[tablename](
    [Sl_no] [int] NOT NULL,
    [Date] [date] NULL,
    [Operation] [nvarchar](max) NULL,
    [Allot] [nvarchar](50) NULL,
    **[xmlcolumn]** [xml] NULL,
    [By] [nvarchar](255) NULL,
    [Dept] [nvarchar](255) NULL,
    [Db] [varchar](255) NULL,
    [tabl] [varchar](255) NULL,
    [Remark] [varchar](5000) NULL,
    [Work] [int] NULL,
    [F2] [nvarchar](max) NULL,
    [F6] [nvarchar](max) NULL,
    [F5] [nvarchar](max) NULL,
    [F8] [nvarchar](max) NULL,
    [ListC] [nvarchar](255) NULL,
    [pro] [nvarchar](max) NULL,
    [Completed] [varchar](50) NULL,
    [WorkTime] [xml] NULL,
    [RelatedData] [varchar](255) NULL,
    [User] …
Run Code Online (Sandbox Code Playgroud)

performance xml sql-server-2008-r2 xquery query-performance

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

即使模型设置为 false,自动关闭属性也会在附加 db 后重置为 true

我正在使用 SQL Server Express 2008 R2。新创建的数据库的自动关闭属性将设置为与模型 db 相同的值。在我的例子中,我已经将模型的 autoclose 设置为 false,这样当我创建一个新数据库时,它也会将 autoclose 设置为 false。

如果我将自动关闭设置为 false 的数据库分离然后附加它,则自动关闭设置为 true。我期望 autoclose 为假,因为它将从模型数据库继承其属性。在我的情况下,分离和附加数据库会导致 autoclose 属性设置为 true。

为什么会这样?这个问题有什么解决办法吗?

database-design sql-server sql-server-2008-r2

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

检查数据库是否已更改以确定是否需要执行备份

我想检查 SQL 服务器数据库是否被修改。检查数据库被修改的原因是为了备份(sql 数据库备份)目的。所以我将首先进行完整备份,如果有任何数据插入、修改或任何结构或任何更改,那么我必须确定数据库中有一些更改并备份数据库。

可以根据频率(每天、每小时等)检查数据库中的变化。mdf 或 ldf 文件的修改日期不能用于检查数据库是否被修改。差异备份仅备份自上次备份以来的更改,但它有所不同,即使自上次备份以来没有更改,它也会进行备份,但大小会非常小(以 kb 为单位,您可以轻松测试)。

在 Windows NTFS 文件系统中,每个文件都存在 USN 日志,通过使用它我们可以检查文件是否被修改,如果修改,我们可以备份文件。这也在大多数备份软件中实现。

那么如何检查上次备份后是否对数据库进行了任何更改,以便在检测到任何更改时进行备份?

sql-server

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