标签: sql-server-2008-r2

从SQL Server 2008 R2 Express升级到SQL Server 2008 R2 Enterprise

当我尝试从SQL Server 2008 R2 Express升级到SQL Server 2008 R2 Enterprise时,它通过了所有测试,然后在步骤"选择功能"时失败,说出以下错误:

没有选择升级功能.

并出现一个窗口错误消息:

此页面上存在验证错误.单击"确定"关闭此对话框.查看设置页面按钮上的错误,然后提供有效参数或单击帮助以获取更多信息.

是可以继续还是我需要备份,卸载Express然后安装新的企业版?

windows sql-server upgrade sql-server-2008-r2 sql-server-2008r2-express

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

在SQL Server中以编程方式将索引从一个表复制到另一个表

基本上与此问题完全相同的问题:如何在SQL Server中将索引从一个表复制到另一个表,但是,如果给出源表名和目标表名,我如何在T-SQL中以编程方式执行?

即不知道前面的桌子.

我可以复制基本结构

SELECT TOP (0) * INTO [BackupTable] FROM [OriginalTable]
Run Code Online (Sandbox Code Playgroud)

但这不会复制索引,约束,触发器等

理想情况下,我想要一个看起来像这样的存储过程:

spCloneTableStructure @ExistingTableName, @NewTableName
Run Code Online (Sandbox Code Playgroud)

这会复制列,主键和索引

这样的事情存在吗?(请注意,我在SQL Server 2008 R2上)

sql-server sql-server-2008 sql-server-2008-r2

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

登录到SQL Server时密码不匹配

好吧,我有一个经典的asp应用程序,我有一个连接字符串,试图连接到数据库.

MY连接字符串如下所示:

 Provider=SQLOLEDB;Data Source=MYPC\MSSQLSERVER;Initial
 Catalog=mydb;database=mydb;User Id=me;Password=123
Run Code Online (Sandbox Code Playgroud)

现在,当我通过front-en访问数据库时,我收到此错误:

Microsoft OLE DB Provider for SQL Server error '80040e4d'
Login failed for user 'me'. 
Run Code Online (Sandbox Code Playgroud)

我查看了sql profiler,我得到了这个:

 Login failed for user 'me'.  Reason: Password did not match that
 for the login provided. [CLIENT: <named pipe>]
 Error: 18456, State:8. 
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

  1. 检查了100次,我的密码实际上是正确的.
  2. 试过这个:( alter login me with check_policy off甚至不知道我为什么这样做)
  3. 在SSMS中为此帐户启用所有可能的权限.

更新:4.我尝试过这个连接字符串: Provider=SQLOLEDB;Data Source=MYPC\MSSQLSERVER;Initial Catalog=mydb;database=mydb; Integrated Security = SSPI

我收到了这个错误:

用于SQL Server的Microsoft OLE DB提供程序错误"80004005"无法打开登录请求的数据库mydb.登录失败.

sql sql-server asp-classic sql-server-2008-r2

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

另一个会话正在使用的事务上下文

我有一个名为MyTableon 的表,我已经定义了一个触发器,如下所示:

CREATE TRIGGER dbo.trg_Ins_MyTable
   ON  dbo.MyTable 
   FOR INSERT
AS 
BEGIN
    SET NOCOUNT ON;

    insert SomeLinkedSrv.Catalog.dbo.OtherTable 
        (MyTableId, IsProcessing, ModifiedOn)
    values (-1, 0, GETUTCDATE())
END
GO
Run Code Online (Sandbox Code Playgroud)

每当我尝试插入一行时MyTable,都会收到以下错误消息:

Msg 3910,Level 16,State 2,Line 1事务上下文,由另一个会话使用.

我已SomeLinkedSrv正确定义为链接服务器(例如,select * from SomeLinkedSrv.Catalog.dbo.OtherTable工作正常).

如何避免错误并成功插入记录+执行触发器?

t-sql triggers linked-server sql-server-2008-r2

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

是否应在父表或子表上创建外键?

有什么不同?如果我有这两个表:

CREATE TABLE Account (Id int NOT NULL)

CREATE TABLE Customer (AccountId int NOT NULL)
Run Code Online (Sandbox Code Playgroud)

我想要一个连接两者的外键,我应该做以下哪些?为什么?

选项1:

ALTER TABLE [dbo].[Customer]  WITH CHECK 
  ADD  CONSTRAINT [FK_Accounts_Customers] FOREIGN KEY([AccountId])
  REFERENCES [dbo].[Account] ([Id])
Run Code Online (Sandbox Code Playgroud)

选项2:

ALTER TABLE [dbo].[Account]  WITH CHECK 
  ADD  CONSTRAINT [FK_Accounts_Customers] FOREIGN KEY([Id])
  REFERENCES [dbo].[Customer] ([Id])
Run Code Online (Sandbox Code Playgroud)

sql foreign-keys sql-server-2008-r2

12
推荐指数
2
解决办法
9927
查看次数

错误:注意:无法通过电子邮件通知"操作员".当作业失败时尝试发送电子邮件

我在工作失败时发送通知时遇到问题.我创建了数据库邮件配置文件并将其分配给SQL代理和重新启动的SQL代理.当我运行程序时msdb.dbo.sp_send_dbmail,正在发送电子邮件.此外,当我使用数据库邮件发送测试电子邮件时,它工作正常.但是当我在Job失败时设置通知时,在作业日志中我看到以下信息:注意:无法通过电子邮件通知"SQL作业失败". 我不知道这个问题的根源是什么.我发现这个提示:http://sqlblog.jfperry.com/jpsql/post/2009/04/07/NOTE-Failed-to-notify-7boperator7d-via-email.aspx

但我检查了在SQL Agent中启用了配置文件.SQL Agent已重新启动.哪里可以成为问题的根源?

database-mail sql-server-2008-r2

12
推荐指数
3
解决办法
9704
查看次数

使用join替换varchar(max)字段中的值

我有一个包含带占位符的文本字段的表.像这样的东西:

Row Notes  
1.  This is some notes ##placeholder130## this ##myPlaceholder##, #oneMore#. End.
2.  Second row...just a ##test#.   
Run Code Online (Sandbox Code Playgroud)

(此表平均包含大约1-5k行.一行中的平均占位符数为5-15).

现在,我有一个如下所示的查找表:

Name             Value
placeholder130    Dog
myPlaceholder     Cat
oneMore           Cow
test              Horse   
Run Code Online (Sandbox Code Playgroud)

(查找表将包含10k到100k记录的任何内容)

我需要找到从字符串到查找表将这些占位符连接起来并用值替换的最快方法.所以,我的结果应该是这样的(第1行):

这是一些注释狗这只猫,牛.结束.

我想出的是为每个占位符将每一行拆分为多个,然后将其连接到查找表,然后将记录连接到具有新值的原始行,但平均需要大约10-30秒.

sql sql-server sql-server-2008-r2

12
推荐指数
3
解决办法
2111
查看次数

我如何从SQL Server中的变量中删除所有NewLine?

我如何从SQL Server中的变量中删除所有NewLine?

我使用SQL Server 2008 R2.

我需要在T-Sql命令中删除变量中的所有NewLine.

例如 :

Declare @A NVarChar(500) 
Set @A = ' 12345
        25487
        154814 '
Print @A    
Run Code Online (Sandbox Code Playgroud)

它像这样印刷

 12345
        25487
        154814 
Run Code Online (Sandbox Code Playgroud)

但我想得到像这样的字符串

12345 25487 154814

我写这个查询,但它不起作用:

Set @A = Replace(@A,CHAR(13),' ')
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2008-r2

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

IsEmpty函数如SQL Server中的ISNULL?

我有这个sql,

IF(@ID = '')
BEGIN
    SET @ID = NULL;
END

IF(@Name = '')
BEGIN
    SET @Name = NULL;
END

IF(@PhoneNumber = '')
BEGIN
    SET @PhoneNumber = NULL;     
END

IF(@Price = '')
BEGIN
    SET @Price = NULL;
END

IF(@NewPrice = '')
BEGIN
    SET @NewPrice = NULL;
END

IF(@ModelNumber = '')
BEGIN
    SET @ModelNumber = NULL;
END

IF(@SKU = '')
BEGIN
    SET @SKU = NULL;
END
Run Code Online (Sandbox Code Playgroud)

我正在寻找IsEmpty函数,如ISNULL.所以我可以,

ISEMPTY(@SKU, NULL)
Run Code Online (Sandbox Code Playgroud)

这在SQL中是否可行.

sql t-sql sql-server sql-server-2008-r2

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

奇怪的"OLE DB提供程序'STREAM'用于链接服务器'(null)'返回列'[!BulkInsert] .Value'错误的无效数据

使用的软件:Windows 7 64位Ultimate,.Net 4,SQL Server 2008 R2.

select @@ version返回:

Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64)   Apr 22 2011 19:23:43   Copyright (c) Microsoft Corporation  Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor) 
Run Code Online (Sandbox Code Playgroud)

要重现,并假设您有本地sql server 2008 R2实例,请将以下代码粘贴到linqpad中并将其作为程序运行.

它爆炸了:

链接服务器'(null)'的OLE DB提供程序'STREAM'返回列'[!BulkInsert] .Value'的无效数据.

void Main()
{
  SqlConnection cn = new SqlConnection("data source=localhost;Integrated Security=SSPI;initial catalog=tempdb;Connect Timeout=180;");
  cn.Open();

  IList<decimal> list = new List<decimal>() {-8m, 8m};

  decimal result = list.Sum(x => x);

  Console.WriteLine(result == 0);

  string tableName …
Run Code Online (Sandbox Code Playgroud)

sqlbulkcopy sql-server-2008-r2 c#-4.0

12
推荐指数
3
解决办法
8135
查看次数