javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

sql-使用数据库表作为队列

我想将数据库表用作队列。 我想在其中插入并按插入顺序(FIFO)从中获取元素。 我主要考虑的是性能,因为每秒我有成千上万的交易。 因此,我想使用一个SQL查询,该查询为我提供第一个元素,而无需搜索整个表。 阅读时我不会删除任何行。SELECT TOP 1 .....在这里有帮助吗?我应该使用任何特殊索引吗?

trans by 2020-08-12T00:30:04Z

使用SQL Server 2008在Visio中进行数据库图解的逆向工程

我需要对Microsoft SQL Server 2008进行反向工程以创建Microsoft Visio 2007数据库模型图。 因此,我从“数据库”菜单中选择“反向工程师”以连接到数据库。

我配置了Microsoft SQL Server Visio驱动程序,以便使用SQL Server Native Client 10.0作为ODBC驱动程序。 之后,我创建了一个用户DSN,该用户DSN连接到我的数据库。 此DSN有效(至少提供的测试成功)。 在“反向工程师向导”中单击“下一步”之后,Visio会询问我正确提供的凭据,但是单击“确定”后,我会收到以下消息:

当前选择的Visio驱动程序与数据源不兼容。

我尝试通过重新配置Visio驱动程序来尝试使用旧的SQL Server ODBC驱动程序。 它也不起作用。

trans by 2020-08-11T09:47:41Z

sql server 2008-T-SQL:导出到新的Excel fi

我有一个执行各种操作的脚本,最终结果是一张大桌子。 我想知道如何将最终表导出到新的Excel文件(以及列标题)中。

我需要在脚本中执行此操作。

trans by 2020-08-11T09:43:24Z

将登录名分配给未登录的用户(SQL Server)

我的数据库中有一个没有关联登录名的用户。 它似乎是未经登录创建的。

每当我尝试与此用户连接到数据库时,都会出现以下错误:

Msg 916, Level 14, State 1, Line 1
The server principal "UserName" is not able to access the database 
"DatabaseName" under the current security context.

我想为此用户指定一个登录名,以便我可以实际使用它来访问数据库。 我尝试使用以下脚本将登录名与用户相关联。

USE [DatabaseName]
ALTER USER [UserName]
WITH LOGIN = [UserName]

但这给了我以下错误:

Msg 33016, Level 16, State 1, Line 2
The user cannot be remapped to a login. Remapping can only be done for users 
that were mapped to Windows or SQL logins.

有什么办法可以给该用户分配登录名? 我不想从头开始,因为该用户有很多权限需要重新设置。

编辑:针对Philip Kelley的问题,这是运行select * from sys.database_principals where name = 'username'时得到的结果。

SQL User

抱歉图片的大小,您需要在新标签页中将其打开才能正确查看。

不:

好的,我已经按照gbn的建议删除了现有的LOGIN,并且正在使用以下脚本创建一个具有与用户相同SID的新LOGIN。

CREATE LOGIN [UserName] 
WITH PASSWORD=N'Password1', 
DEFAULT_DATABASE=[DatabaseName], 
CHECK_EXPIRATION=OFF, 
CHECK_POLICY=OFF, 
SID=0x0105000000000009030000001139F53436663A4CA5B9D5D067A02390

现在给我以下错误消息,看来SID对于LOGIN的SID字段来说太长了。

Msg 15419, Level 16, State 1, Line 1
Supplied parameter sid should be binary(16).

我在没有桨的小河上吗?

trans by 2020-08-10T23:46:14Z

sql server-在T-SQL查询的SELECT子句中使用比较运算符

如何选择比较运算符的结果作为BIT类型的字段?

它在T-SQL中的工作方式:

bool isGreater = FieldA > FieldB;

T-SQL如何运作:

SELECT (FieldA > FieldB) AS BIT FROM t

如何正确编写这样的任务?

trans by 2020-08-09T13:22:45Z

实体框架/ Linq到SQL:跳过&T

只是对“跳过和获取”应该如何工作感到好奇。 我正在获取要在客户端看到的结果,但是当我挂接AnjLab SQL Profiler并查看正在执行的SQL时,它看起来好像是在查询并将整个行集返回给 客户。

它真的返回所有行,然后在客户端使用LINQ排序并缩小范围吗?

我已经尝试使用Entity Framework和Linq to SQL来做到这一点; 两者似乎具有相同的行为。

不确定有什么区别,但是我在VWD 2010中使用C#。

有见识吗?

public IEnumerable<Store> ListStores(Func<Store, string> sort, bool desc, int page, int pageSize, out int totalRecords)
{
    var context = new TectonicEntities();
    totalRecords = context.Stores.Count();
    int skipRows = (page - 1) * pageSize;
    if (desc)
        return context.Stores.OrderByDescending(sort).Skip(skipRows).Take(pageSize).ToList();
    return context.Stores.OrderBy(sort).Skip(skipRows).Take(pageSize).ToList();
}

产生的SQL(注意:我不包括Count查询):

SELECT 
[Extent1].[ID] AS [ID], 
[Extent1].[Name] AS [Name], 
[Extent1].[LegalName] AS [LegalName], 
[Extent1].[YearEstablished] AS [YearEstablished], 
[Extent1].[DiskPath] AS [DiskPath], 
[Extent1].[URL] AS [URL], 
[Extent1].[SecureURL] AS [SecureURL], 
[Extent1].[UseSSL] AS [UseSSL]
FROM [dbo].[tec_Stores] AS [Extent1]

经过一些进一步的研究,我发现以下方法可以达到我期望的方式:

public IEnumerable<Store> ListStores(Func<Store, string> sort, bool desc, int page, int pageSize, out int totalRecords)
{
    var context = new TectonicEntities();
    totalRecords = context.Stores.Count();
    int skipRows = (page - 1) * pageSize;           
    var qry = from s in context.Stores orderby s.Name ascending select s;
    return qry.Skip(skipRows).Take(pageSize);           
}

产生的SQL:

SELECT TOP (3) 
[Extent1].[ID] AS [ID], 
[Extent1].[Name] AS [Name], 
[Extent1].[LegalName] AS [LegalName], 
[Extent1].[YearEstablished] AS [YearEstablished], 
[Extent1].[DiskPath] AS [DiskPath], 
[Extent1].[URL] AS [URL], 
[Extent1].[SecureURL] AS [SecureURL], 
[Extent1].[UseSSL] AS [UseSSL]
FROM ( SELECT [Extent1].[ID] AS [ID], [Extent1].[Name] AS [Name], [Extent1].[LegalName] AS [LegalName], [Extent1].[YearEstablished] AS [YearEstablished], [Extent1].[DiskPath] AS [DiskPath], [Extent1].[URL] AS [URL], [Extent1].[SecureURL] AS [SecureURL], [Extent1].[UseSSL] AS [UseSSL], row_number() OVER (ORDER BY [Extent1].[Name] ASC) AS [row_number]
    FROM [dbo].[tec_Stores] AS [Extent1]
)  AS [Extent1]
WHERE [Extent1].[row_number] > 3
ORDER BY [Extent1].[Name] ASC

我真的很喜欢第一种方法的工作方式。 传递lambda表达式进行排序。 有什么方法可以在LINQ to SQL orderby语法中完成相同的工作吗? 我尝试使用qry.OrderBy(sort).Skip(skipRows).Take(pageSize),但这最终给了我与第一段代码相同的结果。 使我相信我的问题在某种程度上与OrderBy有关。

====================================

问题解决了

必须将传入的lambda函数包装在Expression中:

Expression<Func<Store,string>> sort
trans by 2020-08-09T05:54:31Z

SqlDependency可靠性?

我目前的情况是我有一个应用程序,当新数据到达数据库表时需要通知该应用程序。 数据来自外部来源(我无法控制,这是唯一的集成选项)。 当新数据到达时,我的应用程序需要采取某些措施-基本查询新数据,进行处理,将结果插入本地表等。

我希望尽可能避免轮询,因为预计数据将被实时处理。 也就是说,确保没有数据遗失是第一要务。

我的问题:

  1. 通常认为SqlDependency是可靠的吗?
  2. 我是否需要关注比赛条件,例如 当另一个到达时我正在处理一个更改吗?
  3. 重新启动数据库后会发生什么? 我的应用程序是否会恢复并重新开始接收更改,还是需要某种故障安全计时器来定期重新订阅通知?
  4. 我在该主题上阅读的大多数文章都涉及到SQL Server2005。我正在使用SQL Server 2008 R2。 有没有比SqlDependency更好的更新技术?
  5. (编辑)此外,如果应用程序出现故障怎么办? 我想我必须在启动时查询丢失的数据吗?
trans by 2020-08-05T10:33:45Z

sql server-暂时禁用所有外键约束

我正在运行一个SSIS包,它将替换FlatFiles中的一些表的数据到数据库中的现有表。

我的程序包将截断表,然后插入新数据。 当我运行SSIS程序包时,由于外键而导致异常。

我可以禁用约束,运行导入然后重新启用约束吗?

trans by 2020-08-03T15:56:35Z

SQL Server-如何在不删除SQL 2008中的表的情况下更改列

当我将列类型从int更改为real时,为什么SQL 2008突然想要删除表? 据我所知,这在SQL 2005中从未发生过。 任何见解都会有所帮助。

trans by 2020-08-03T03:09:44Z

c#-加密app.config中的连接字符串

我在加密app.config中的连接字符串时遇到问题。 我有用于保护app.config的connectionStrings部分的代码,但是密码仍然以纯文本显示。

我需要加密连接字符串,因此部署时它不是纯文本格式。 我在SO。上看到了类似的问题,而不是app.config。

trans by 2020-08-02T11:12:36Z

如何在SQL Server 2008上找到禁用的索引

不久前,当我向SQL Server数据库中进行一些数据批量插入时,我禁用了许多索引以提高插入性能。 现在,我需要回去重新构建/重新启用它们。

不幸的是,我不确定到底禁用了哪些索引。

有没有一种方法可以查询我确定哪些索引已禁用并应重新启用?

trans by 2020-08-01T23:50:12Z

sql server-基于delimi的T-SQL拆分字符串

我有一些数据要根据可能不存在的分隔符进行拆分。

示例数据:

John/Smith
Jane/Doe
Steve
Bob/Johnson

我正在使用以下代码将此数据拆分为名字和姓氏:

SELECT SUBSTRING(myColumn, 1, CHARINDEX('/', myColumn)-1) AS FirstName,
       SUBSTRING(myColumn, CHARINDEX('/', myColumn) + 1, 1000) AS LastName
FROM   MyTable

我想要的结果:

FirstName---LastName
John--------Smith
Jane--------Doe
Steve-------NULL
Bob---------Johnson

只要所有行都具有预期的定界符,此代码就可以正常工作,但是当行没有分隔符时会出错:

"Invalid length parameter passed to the LEFT or SUBSTRING function."

如何将其重写才能正常工作?

trans by 2020-07-31T04:29:29Z

SQL Server-设置IDENTITY_INSERT ON不起作用

我想将一个表Equipment从一个数据库MyDBQA复制到我们的测试数据库MyDB。该表中有一个标识列,它是主键(int,不为null)。

但是我得到一个错误:

信息8101,第16级,状态1,第2行
表'MyDB.dbo.Equipment'中Identity列的显式值只能在使用列列表时指定 并且IDENTITY_INSERT为ON。

我的剧本:

SET IDENTITY_INSERT [MyDB].[dbo].[Equipment] ON
INSERT INTO [MyDB].[dbo].[Equipment]  SELECT * FROM [MyDBQA].[dbo].[Equipment]
SET IDENTITY_INSERT [MyDB].[dbo].[Equipment] OFF
trans by 2020-07-30T06:12:56Z

在SQL Server数据库中使用脚本删除主键

这个问题已经在这里有了答案:

  • 在SQL Server 2005中即时查找主键约束 3个答案

我需要在SQL Server数据库中删除表PK__Student__9CC368536561EF8B的主键。

我已经在表格中进行了编辑,得到的脚本是

ALTER TABLE dbo.Student
    DROP CONSTRAINT PK__Student__9CC368536561EF8B

但是当我在SQL Server查询浏览器中运行此脚本以删除主键时

它显示消息

消息3728,第16级,状态1,第1行
'PK__Student__9CC368536561EF8B'不是一个约束。
消息3727,级别16,状态0,第1行

就我而言,我认为PK__Student__9CC368536561EF8B这将是随机生成的请帮助我使用脚本删除主键约束。

提前致谢

trans by 2020-07-29T21:45:44Z

如何使用SQL从当前日期减去30天

我无法从当前日期减去30天,而且我是SQL Server的新手。

这是我栏中的数据

date 
------------------------------
Fri, 14 Nov 2014 23:03:35 GMT
Mon, 03 Nov 2014 15:18:00 GMT
Tue, 11 Nov 2014 01:24:47 GMT
Thu, 06 Nov 2014 19:13:47 GMT
Tue, 04 Nov 2014 12:37:06 GMT
Fri, 1 Nov 2014 00:33:00 GMT
Sat, 5 Nov 2014 01:06:00 GMT
Sun, 16 Nov 2014 06:37:12 GMT

对于创建以上列,我使用了varchar(50),现在我的问题是我想显示日期列中过去15-20天的日期,任何人都可以帮助解决此问题吗?更新[如何按顺序显示最近7天的日期

trans by 2020-07-29T05:58:08Z

sql server 2008-表类型变量中的复合主键

SQL Server 2008:

DECLARE @MyTable TABLE(
    PersonID INT NOT NULL,
    Person2ID INT NOT NULL,
    Description NVARCHAR(100),
CONSTRAINT PK PRIMARY KEY CLUSTERED (PersonID, Person2ID)
);

给出:

Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'CONSTRAINT'.

有什么方法可以在表值变量中使用复合主键?

trans by 2020-07-26T10:35:10Z

匹配带有尾随空格的值的SQL WHERE子句

在SQL Server 2008中,我有一个名为zoneReference.Trim()的表,其中有ZoneReference varchar(50) not null列作为主键。

如果我运行以下查询:

select '"' + ZoneReference + '"' as QuotedZoneReference
from Zone
where ZoneReference = 'WF11XU'

我得到以下结果:

"WF11XU "

注意尾随空格。

这怎么可能? 如果在该行上确实存在尾随空格,那么我期望返回零结果,因此我假设SQL Server Management Studio奇怪地显示了其他内容。

在C#代码中,调用zoneReference.Trim()会将其删除,表明它是某种空白字符。

有人可以帮忙吗?

trans by 2020-07-26T06:01:14Z

sql-列中包含逗号分隔值的值

我希望为SQL Server 2008编写一条SQL语句,该语句选择一个列包含值的条目,现在该列中的值是一个以逗号分隔的列表(通常-只能有一个条目(没有前导逗号)),所以 在检查中是否“此值是否包含在列表中?”,例如:

COLUMN = Cat, Dog, Sparrow, Trout, Cow, Seahorse
Does COLUMN contain Cat? YES
Does COLUMN contain horse? NO
Does COLUMN contain Sheep? NO

要么

COLUMN = Mouse
Does COLUMN contain Hare? NO
Does COLUMN contain Mouse? YES

等等

我当时以为可以这样使用'IN'关键字

SELECT id_column FROM table_name WHERE 'Cat' IN COLUMN

但这是行不通的,因为您似乎只能使用它来检查列是否包含一系列用逗号分隔的值之一。

我也不能使用CONTAINS()或'LIKE'这样,在上面的示例中将返回'horse'的值,因为整个字符串在'Seahorse'中都包含马,并且我无法搜索加针和逗号(如果 我正在寻找“马”,搜索将是“马”,如果条目位于列表的末尾呢? 而且我无法搜索逗号加针(如果我要查找“马”,则搜索为“,马”)如果条目是列表中的第一条怎么办? 而且,如果该条目是唯一(单个)条目,我将不能同时使用两者?

trans by 2020-07-25T08:38:10Z

字符串-在SQL 2008中获取最后一个字符索引的最佳方法是什么

这个问题已经在这里有了答案:

  • 使用T-SQL查找最后一次出现的子字符串的索引 21个答案

在C#中,我们有String.LastIndexOf方法来获取给定字符串的特定字符位置的最后一个索引。 在SQL Server中是否有任何类似的功能可以执行相同的操作。 我尝试使用CHARINDEX,但无法实现。

trans by 2020-07-24T19:49:32Z

sql-如何在整个数据库中查找字符串?

我有一个特定的字符串,例如“ 123abcd”,但是我不知道表的名称,甚至不知道SQL Server数据库中表内的列的名称。 我想通过选择找到它并显示相关字符串的所有列,所以我想知道以下内容:

select * from Database.dbo.* where * like  '%123abcd%'

出于明显的原因,它不起作用,但是有一种简单的方法可以创建select语句来执行类似的操作?

trans by 2020-07-23T14:10:29Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 下一页 共16页