Tag: sql

在SQL Server数据库中使用单行configuration表。 馊主意?

在开发购物车应用程序时,我发现我需要根据pipe理员的偏好和要求保存设置和configuration。 这些信息可以来自公司信息,运输账户ID,PayPal API密钥,通知首选项等等。 在关系数据库系统中创build一个表来存储单行似乎是非常不合适的。 什么是适当的方式来存储这些信息? 注意:我的DBMS是SQL Server 2008,编程层是用ASP.NET(在C#中)实现的。

如何报告来自SQL Server用户定义函数的错误

我正在SQL Server 2008中编写一个用户定义的函数。我知道函数不能以通常的方式引发错误 – 如果尝试包含RAISERROR语句,则SQL返回: Msg 443, Level 16, State 14, Procedure …, Line … Invalid use of a side-effecting operator 'RAISERROR' within a function. 但事实是,函数需要一些input,这可能是无效的,如果是,则没有有意义的值,函数可以返回。 那我该怎么办? 当然,我可以返回NULL,但使用该函数的任何开发人员将很难对此进行故障排除。 我也可以通过零或类似的东西导致划分 – 这会产生一个错误信息,但是一个误导性的。 有什么办法可以让我自己的错误消息报告吗?

如何在devise表时实现一对一,一对多和多对多的关系?

任何人都可以解释如何实现一对一,一对多和多对多的关系,同时devise一些例子的表?

多部分标识符不能被绑定

我已经看到类似的错误,但我没有find解决我的问题。 我有一个SQL查询,如: SELECT DISTINCT a.maxa , b.mahuyen , a.tenxa , b.tenhuyen , ISNULL(dkcd.tong, 0) AS tongdkcd FROM phuongxa a , quanhuyen b LEFT OUTER JOIN ( SELECT maxa , COUNT(*) AS tong FROM khaosat WHERE CONVERT(DATETIME, ngaylap, 103) BETWEEN 'Sep 1 2011' AND 'Sep 5 2011' GROUP BY maxa ) AS dkcd ON dkcd.maxa = […]

将数据库从单用户模式设置为多用户

我需要帮助设置数据库在单SINGLE USER模式下恢复到MULTI USER 。 每次跑步 ALTER DATABASE BARDABARD SET MULTI_USER; GO 我得到这个错误: 目前无法更改数据库“BARDABARD”的状态或选项。 数据库处于单用户模式,并且当前正在连接一个用户。 它需要在非单SINGLE USER模式下设置为另一种模式,但在单SINGLE USER模式下,我无法将数据库设置为其他任何模式。

SQL调用每个行的存储过程而不使用游标

如何调用一个表中的每一行的存储过程,其中一行的列是input参数的SP 没有使用光标?

选项(RECOMPILE)总是更快; 为什么?

我遇到了一个奇怪的情况,追加OPTION (RECOMPILE)到我的查询导致它运行在半秒钟,而省略它导致查询花费超过五分钟。 查询分析器或从我的C#程序通过SqlCommand.ExecuteReader()执行查询时就是这种情况。 调用(或不调用) DBCC FREEPROCCACHE或DBCC dropcleanbuffers没有区别; 查询结果总是立即用OPTION (RECOMPILE)返回,并且在没有它的情况下大于五分钟。 查询总是用相同的参数调用[为了这个testing]。 我正在使用SQL Server 2008。 我对编写SQL相当舒服,但从未在查询中使用过OPTION命令,并且对计划caching的整个概念不熟悉,直到扫描此论坛上的post。 我从post的理解是OPTION (RECOMPILE)是一个昂贵的操作。 它显然为查询创build了一个新的查找策略。 那么为什么接下来的查询忽略了OPTION (RECOMPILE)这么慢呢? 后续查询不应该使用前一次调用时计算的查找策略,其中包括重新编译提示? 有一个查询需要每次调用重新编译提示是非常不寻常的吗? 对于入门级的问题抱歉,但我不能真正地使这个头或尾巴。 更新:我被要求发布查询… select acctNo,min(date) earliestDate from( select acctNo,tradeDate as date from datafeed_trans where feedid=@feedID and feedDate=@feedDate union select acctNo,feedDate as date from datafeed_money where feedid=@feedID and feedDate=@feedDate union select acctNo,feedDate as date from datafeed_jnl […]

从DateTime提取小时(SQL Server 2005)

我可以使用Day(Date()) , Month(Date())来提取月份和Month(Date()) 。 我不能提取小时,用HOUR(Date()) 。 我得到以下错误。 'HOUR' is not a recognized built-in function name. 我怎样才能提取小时?

PostgreSQL DISTINCT与不同的ORDER BY

我想运行这个查询: SELECT DISTINCT ON (address_id) purchases.address_id, purchases.* FROM purchases WHERE purchases.product_id = 1 ORDER BY purchases.purchased_at DESC 但是我得到这个错误: PG ::错误:错误:SELECT DISTINCT ONexpression式必须匹配初始的ORDER BYexpression式 添加address_id作为第一ORDER BYexpression式沉默错误,但我真的不希望添加sortingover address_id 。 有没有可能没有通过address_id命令?

检查对SQL Server表的更改吗?

如何监视SQL Server数据库对表的更改而不使用触发器或以任何方式修改数据库的结构? 我的首选编程环境是.NET和C#。 我希望能够支持任何SQL Server 2000 SP4或更新版本。 我的应用程序是另一家公司产品的螺栓式数据可视化。 我们的客户群是数千人,所以我不希望在每次安装时都要求我们修改第三方供应商的表格。 通过“更改到表”我的意思是更改表数据,而不是更改表结构。 最终,我希望更改在我的应用程序中触发事件,而不必每隔一段时间检查一次更改。 根据我的要求(无触发器或架构修改,SQL Server 2000和2005),最好的方法似乎是在T-SQL中使用BINARY_CHECKSUM函数。 我打算实施的方式是这样的: 每X秒运行以下查询: SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM sample_table WITH (NOLOCK); 并将其与储值进行比较。 如果值已更改,请使用查询逐行浏览表: SELECT row_id, BINARY_CHECKSUM(*) FROM sample_table WITH (NOLOCK); 并比较返回的校验和与存储的值。