小编gbn*_*gbn的帖子

由于使用了XML/ANSI_NULLS,QUOTED_IDENTIFIER选项,SQL Server存储过程失败

我有一个存储过程,它接受XML参数并将数据插入到多个表中.如果我使用SSMS查询窗口将存储过程运行到数据库中,一切正常.但是,我们有一个自定义安装程序,用于将存储过程部署到数据库,当使用它时,sp的执行失败并显示以下错误:

INSERT failed because the following SET options have incorrect settings:
'ANSI_NULLS, QUOTED_IDENTIFIER'. Verify that SET options are correct for use with
indexed views and/or indexes on computed columns and/or query notifications 
and/or xml data type methods.
Run Code Online (Sandbox Code Playgroud)

在存储过程中编写脚本时,自定义安装程序不使用正确的设置.

在sp中设置这些(SET ARITHABORT ON; SET QUOTED_IDENTIFIER ON; SET ANSI_NULLS ON;)无效:

在调用代码中的sp之前,我还尝试为open连接设置这些选项.这再次没有达到预期的效果.

在sp运行到数据库,与数据库连接的设置似乎很重要,而不是使用sp时的设置.

我已经通过在SSMS选项中使用这些设置进行了实验,这似乎就是这种情况.我希望有人确认这是绝对的情况(如果有一种方法我会喜欢听到它,但我没有希望)

不幸的是,改变安装程序目前不是我的选择,所以我期待不得不回滚几周的工作; 所以,如果我必须这样做,我想确定(并有一些证据支持我),这是唯一的选择

xml sql t-sql sql-server stored-procedures

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

SQL Server存储过程和权限

是否可以拒绝SQL Server中所有内容的权限(例如,选择,插入等)并通过存储过程提供临时权限.我想只使用存储过程来访问sql数据库中的数据.

这可能还是有另一种方式?

sql t-sql sql-server permissions

7
推荐指数
2
解决办法
2738
查看次数

我不应该在Sql Server中使用NVARCHAR吗?

我现在正在设计一个数据库方案,为了安全起见我应该使用nvarchar作为我的文本列的数据类型(用于unicode支持).虽然我不期望非英语文本,但我认为最好从一开始就支持它以防万一.

我有什么理由坚持使用普通varchar吗?性能?

sql sql-server varchar nvarchar

6
推荐指数
2
解决办法
4411
查看次数

将XML导入SQL Server

我可以找到很多关于如何将某些类型的XML数据导入SQL Server 2005的示例.但是我已经获得了以下格式的数据(用ID代替"row"和"cell"而不是命名的标签等:

<?xml version="1.0"?> <rows>
    <row id='1'>
        <cell id='category'>Simple</cell>
        <cell id='query'>summary</cell>
        <cell id='clientsfound'>6</cell>
        <cell id='eligibleclients'>11</cell>
        <cell id='percentage'>55</cell>
        <cell id='days'>0</cell>
    </row>

    <row id='2'>
        <cell id='category'>Complex</cell>
        <cell id='query'>details</cell>
        <cell id='clientsfound'>4</cell>
        <cell id='eligibleclients'>6</cell>
        <cell id='percentage'>67</cell>
        <cell id='days'>5</cell>
    </row>

    ...
     </rows>
Run Code Online (Sandbox Code Playgroud)

理想情况下,我想将其加载到表中,例如:

CREATE TABLE [dbo].[QueryResults](
    [UserString] [varchar](50) NULL,
    [ImportStamp] [timestamp] NULL,
    [RowID] [int] NULL,
    [Category] [nchar](10) NULL,
    [Query] [nchar](10) NULL,
    [ClientsFound] [int] NULL,
    [EligibleClients] [int] NULL,
    [Percentage] [int] NULL,
    [Days] [int] NULL
)
Run Code Online (Sandbox Code Playgroud)

有人能为我提供一个示例或指向在线教程吗?

xml sql t-sql sql-server

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

比较两个T-SQL表的差异

我有同一数据库的两个实例。第一个数据库代表今天的数据,第二个数据库代表6个月前的数据。我需要找到特定表中条目子集的差异。

对于两个表中都有ID的条目,我想找到一种方法来仅查看不相同的行。

有任何想法吗?

谢谢

sql t-sql sql-server

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

存储过程和SqlCommand超时

如果我使用SqlCommand运行存储过程并且SqlCommand超时,StoredProc会继续执行还是在SqlCommand断开连接时强行退出?

c# sql sql-server timeout sqlcommand

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

在数据库中以原子方式标记并返回一组行

我正在编写一个后台服务,需要处理一系列作业,作为记录存储在sqlserver表中.该服务需要找到需要工作的最早的20个作业(where status = 'new'),标记它们(set status = 'processing'),运行它们,然后更新作业.

这是我需要帮助的第一部分.可能有多个线程同时访问数据库,我想确保"标记和返回"查询以原子方式或几乎原样运行.

这项服务将花费相对较少的时间来访问数据库,如果一个作业运行两次,它就不是世界末日,所以我可能会接受一小部分作业运行的概率,以提高代码的简单性.

做这个的最好方式是什么?我正在为我的数据层使用linq-to-sql,但我认为我必须为此调入t-sql.

sql sql-server concurrency linq-to-sql

6
推荐指数
2
解决办法
607
查看次数

使用"Like"函数比较同一表中的2列

我试图想出一种方法来查询同一个表中两个不同列中的值,其中结果集将指示columnB的值不包含columnA值的实例.

例如,我的"节点"表包含"NodeName"和"DNS"列.值应类似于以下内容:

NodeName    DNS
Router1     Router1.mydomain.com
Run Code Online (Sandbox Code Playgroud)

我想运行一个查询来显示哪些行的DNS值不包含(或以NodeName字段的值开头).我认为查询应该具有类似于以下内容的功能,但显然我在这种情况下缺少关于使用"Like"的内容.

SELECT NodeName, DNS
WHERE DNS NOT LIKE 'NodeName%'
Run Code Online (Sandbox Code Playgroud)

我正在使用SQL Server 2005,任何建议都将非常感谢...... :)

sql sql-server sql-server-2005 pattern-matching

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

为什么我的CASE表达式不确定?

我试图使用CASE表达式创建一个持久的计算列:

ALTER TABLE dbo.Calendar ADD PreviousDate AS 
case WHEN [Date]>'20100101' THEN  [Date]
    ELSE NULL
    END PERSISTED
Run Code Online (Sandbox Code Playgroud)

MSDN清楚地说CASE是确定性的,在这里

但是,我收到一个错误:

消息4936,级别16,状态1,行1"表日历"中的计算列"PreviousDate"无法保留,因为该列是非确定性的.

当然,我可以创建一个标量UDF并明确声明它是确定性的,但是有更简单的方法吗?我已经在获取最新的服务包了.谢谢.

sql sql-server calculated-columns sql-server-2008 persisted-column

6
推荐指数
2
解决办法
4469
查看次数

在mysql中插入非英语小数点

如何让mysql理解整数/浮点字段中的非英语小数点?

setLocale(LC_ALL, 'da_DK.ISO-8859-1');
Run Code Online (Sandbox Code Playgroud)

例如:

0,25 will be inserted as 0
0.25 will be inserted as 0.25
Run Code Online (Sandbox Code Playgroud)

php mysql

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