我使用以下查询来检查我的SQL DB中是否有用户定义的对象。
DECLARE @testForEmpty BIT
if exists
(select top 1 null from dbo.sysobjects where (objectproperty(id, 'IsMsShipped') = 0))
set @testForEmpty = 0
else set @testForEmpty = 1
当我以特定用户的身份运行这个查询时,我总是得到testForEmpty = 1。这意味着如果exists调用返回空行。
但是,如果我将用户添加为sys
我们从SQL Server 2000迁移到2008,当我们使用UNION操作符时,针对某些用户(在某些数据库角色中)的查询运行非常慢。我试过了和所有的联合
查询如下所示
SELECT 'PONumber'= '','POId'=''
UNION
SELECT DISTINCT
'PONumber'=PONumber,
'POId'=RTRIM(CONVERT(varchar(32),po.POId) )
FROM Purc
我试图将用户添加到某个角色,得到的结果是‘用户已经在角色中了。’,用户实际上不在任何角色中,我跟踪了在Roles.IsUserInRole(user_name)后面运行的查询,它是这样的:
SELECT COUNT(*) FROM my_aspnet_usersinroles uir
JOIN my_aspnet_users u ON uir.userId=u.id
JOIN my_aspnet_roles r ON uir.roleId=r.id
WHERE u.applicationId=1 AND
u.name LIKE 'user_name' AND r.name
我在一个旧的SQL2000数据库中有一个存储过程,它接受格式化为varchar的comment列,并将其导出为money对象。在设置此表结构时,假定这将是进入此字段的唯一数据。当前过程的功能简单如下:
SELECT CAST(dbo.member_category_assign.coment AS money)
FROM dbo.member_category_assign
WHERE member_id = @intMemberId
AND
dbo.member_category_assign.eff_date <= @dtmEndDate
我目前正在开发一个使用SQL Server2005、SQL、SQL、ASP.Net成员提供程序(用于身份验证和授权)和Linq的web应用程序。一切都运行得很好,并且在开发环境中按计划运行。
但是,生产环境安装了SQL Server 2000,我们无法获得SQL Server 2000的副本以用于开发。
将web应用程序部署到生产环境后,将数据库(架构+数据)从2005迁移到2000有哪些选项?
我们有一个从字符串的前8个字符中提取日期的函数。由于这个系统的编写方式,用户被告知他们必须在字段中以8个字符的格式输入日期。例如,必须输入12/06/10。按照原始函数的编写方式,12/6/10或12/06/2010会生成错误的日期。
我将函数修改为下面的代码来纠正这个问题,不知道是否有人有任何其他建议来使这个更防弹。我假设返回日期时间将始终返回19xx或20xx的有效日期。我不确定SQL使用什么来确定何时使用19xx还是20xx,我也不担心小于1980且大于2100的日期。
对于此应用程序,我们仍使用SQL Server 2000。
Alter FUNCTION [dbo].[GetDate
我们开始从SQL Server 2000升级到SQL Server 2008,然后升级到SQL Server 2012 (我们不能直接从2000升级到2012)。
SQL Server2000中的一个存储过程将@ErrorMsg的值设置为sys.objects视图中的name列,其中name是给定值。出于这些目的,这里假设我正在查找在sys.objects视图中确实存在的名称zz_BICWS_PersonInfo_Search_1000000000000000000。
该过程在SQL Server 2000中工作,如果我在SQL Server 2012中运行以下代码,它将返回正确的名称,但在S
我遵循的是,下面的代码确实可以工作,但需要大约90秒才能运行。数据库模式只有不到10个表(相当简单)。我不知道为什么花了这么长时间。对如何调试有什么建议吗?
var host = "192.168...";
var user = "username";
var pass = "password";
var srcDbName = "srcDbName";
var dstDbName = "dstDbName";
var server = new Server(new ServerConnection(host,
在2005中:
如果将“设置工具”、“{##**$$}\{e76f}\{e76f}”的“包含(如果不存在)子句”设置为true,则修改存储过程将创建一个甚至无法工作的奇怪脚本。它看起来如下所示:(省略号用于简洁性)
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS [...]
BEGIN
EXEC dbo.sp_executesql @statement = N'
ALTER procedure [dbo].[p_Procedure]
[...]
'
END
这显然不起作用,因为调用ALTER语句的唯一方法是存储过程不存在。
下面存储的proc返回来自多个相关表的数据,并在投票表上进行交叉应用。这种交叉应用返回与特定文章in相关联的truthid列中所有真实值的平均值,并且对于relevanceid列也是如此。这很有效,除非还没有为特定的文章no投票。在这种情况下,存储的proc根本不返回任何内容。如果我不想在投票表中伪造记录,有没有人能想到一个解决这个问题的好方法?
( @ArticleID int )
AS
BEGIN
WITH Article AS
(
SELECT
tbrm_Article.ArticleID,
tbrm_Article.CountryID,
tbrm_Article.CategoryI
您好,我有一个sql server 2000数据库,我向此数据库添加了一些扩展属性。然后我安装了sql server2008 rc2和management studio。当我想要用management studio打开sql server 2008db扩展属性时,我只需右击数据库,它就在那里,但是如果我在sql server 2000数据库上尝试,我找不到它的扩展属性。
我将非常感谢你的帮助。