标签: sql-server-2008-r2

从MySQL迁移到SQL Server,遇到约束问题

我创建了一个使用MySQL数据库的Web应用程序,但我必须将数据库迁移到Microsoft SQL Server 2008 R2,并且我正在使用SQL Server迁移助手(SSMA).

我在报告中遇到一些使用外键的表的错误.

1.自引用外键

我有一个表在行之间有父子关系; 图表:

| map_id | map_title           | latitude  | longitude  | map_zoom | map_parent |
|:------:|:-------------------:|:---------:|:----------:|:--------:|:----------:|
| 1      | My Parent Map       | 50.364829 | -52.635623 | 17       | NULL       |
| 2      | Some Child Map      | 50.366916 | -52.634718 |          | 1          |
| 3      | Another Child Map   | 50.364898 | -52.634543 |          | 1          |
| 4      | My Last Example Map | …
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-server sql-server-2008-r2 sql-server-migration-assi

14
推荐指数
1
解决办法
2792
查看次数

查询时的SQL Server默认数据库 - 主数据库

我在过去的8年里一直在使用SQL Server Management Studio(SSMS),而且我一直在遇到问题.当我右键单击一个表,然后选择SELECT TOP 2000 ROWS时,查询编辑器会打开一个包含查询的新文件.这很好,所有这些都是为了快速查看表格.

我遇到的问题是默认数据库从实际数据库更改为master数据库.我有sysadmin权限.

由SSMS生成的查询,然后在括号中包含数据库,模式和表,即[DB].[dbo].[TableName]

有没有办法在SELECT TOP 2000 ROWS命令上设置默认数据库,而不是去默认数据库设置为'master'?

另一种解决方法是单击表,然后执行"新查询",它将保留当前数据库,然后我必须输入'SELECT*FROM TableName'

默认数据库已更改为master

ssms sql-server-2008-r2 sql-server-2012

14
推荐指数
1
解决办法
7318
查看次数

如何在多用户模式下重命名数据库

我正在研究SQL SERVER 2008和2008 R2.如何在多用户模式下重命名数据库?我使用sp_rename但它返回此错误:

Msg 15225,Level 11,State 1,Procedure sp_rename,Line 338

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

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

将Tablix行高设置为SQL Server Report Builder 3.0中的特定数字?

我正在尝试将详细信息行的行高设置为特定值,如0.5英寸.如果我单击Tablix句柄以获取详细信息行; 它选择行但是Size属性不会为Height属性展开,或允许在Height属性中输入类似0.5英寸的内容.

在拖动控件以估计高度之外是否有办法输入行高的特定数字?

bids sql-server-2008-r2 reporting-services ssrs-tablix reportbuilder3.0

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

澄清为什么EXECUTE AS USER/LOGIN没有返回预期的结果?

我正在对数据库运行以下查询:

execute as user = 'domain\username'
select * from fn_my_permissions(null, 'DATABASE')
order by subentity_name, permission_name
revert;
Run Code Online (Sandbox Code Playgroud)

但是抛出以下错误:

Cannot execute as the database principal because the principal "dev\spadmin" does not exist, this type of principal cannot be impersonated, or you do not have permission.

用户是数据库的dbo,当我打开管理工作室中的属性时,我可以看到它与该登录相关联.EXECUTE AS LOGIN = 'domain\username'另一方面,Running 确实返回结果.如果我明确地运行EXECUTE AS USER = 'dbo',我会得到结果.我也有一个不同的数据库,其中同样的场景返回带有EXECUTE AS USER和的结果EXECUTE AS LOGIN.

在另一个使用不同用户的情况下,我已经跑了EXECUTE AS LOGIN = 'domain\username'但是我没有得到结果,但我确实得到了结果EXECUTE AS USER = 'domain\username'.

这些方案中的两个用户都与db_owner …

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

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

在Excel 2010 Powerpivot Addin中为SQL Server 2008 R2中的每个连接表键入密码

我在使用Powerpivot的Excel 2010中有一个BI Dashboard,它连接到一个SQL Server上的查询表.设置连接后,我选中了"保存密码"复选框.但是,每当我的用户重新打开文档并进入Powerpivot窗口并选择"RefreshAll"时,他们就必须多次输入密码(每个表一次),这是不合适的.

我在这里这里看过,似乎遇到了和其他人一样的问题.我已经从头开始了,确保在每个连接字符串上明确检查"保存密码"框.

我能想到的唯一解决方法是用户Windows身份验证,但是这个文档是供广泛使用的,因此这需要大量的维护,并且会让我的服务器管理员烦恼:)

有没有人有解决方法或解决问题的方法?

sql-server-2008-r2 excel-2010 powerpivot

14
推荐指数
1
解决办法
1720
查看次数

在构建安装项目时,如何阻止SQL Server 2008 R2尝试安装某个软件包?

我有一个WPF Linq-to-SQL项目,我一直在使用MS Visual Studio 2008开发.我运行SQL Server 2008,最近将其升级到R2版本.现在,每当我构建我的SETUP项目(而不是应用程序本身)时,构建过程会导致窗口启动:

SQL Server 2008 R2 Management Studio请等待Windows配置SQL Server 2008 R2 Management Studio

在进度条和延迟之后,抱怨:"您尝试使用的功能是在不可用的网络资源上." 有一个指向源的选项,它显然试图使用不存在的c:\ 687b0370badbfcf47c\x86\setup \.

如果我在此时单击"取消",则会显示"无法找到产品SQL Server 2008 R2 Management Studio的安装包.请使用安装包"sql_ssms.msi"的有效副本再次尝试安装."

然后我开始观察进度条向后看,然后它重新开始.此时,安装版本正在等待尝试为我的项目构建MSI.有一次这导致Visual Studio崩溃.其他时候,我已经能够告诉进度条窗口取消,然后我的安装项目构建正常.

所以我的问题是:

  • 当我尝试构建设置时,如何让它停止启动不需要的安装程序尝试?

  • 为什么它首先这样做?

visual-studio-2008 linq-to-sql sql-server-2008-r2 visual-studio-setup-proje

13
推荐指数
2
解决办法
5566
查看次数

如何从两个查询的并集中选择前n个,其中生成的顺序需要按个别查询排序?

假设我有一个用户名表:

Id  |  Name
-----------
1   |  Bobby
20  |  Bob
90  |  Bob
100 |  Joe-Bob
630 |  Bobberino
820 |  Bob Junior
Run Code Online (Sandbox Code Playgroud)

我想n在'Bob'的名称上返回一个匹配列表,其中结果集首先包含完全匹配,然后是类似的匹配.

我觉得这样的事情可能有用

SELECT TOP 4 a.* FROM
(
    SELECT * from Usernames WHERE Name = 'Bob'
    UNION
    SELECT * from Usernames WHERE Name LIKE '%Bob%'
) AS a
Run Code Online (Sandbox Code Playgroud)

但有两个问题:

  1. 这是一个效率低下的查询,因为子选择可以返回许多行(查看执行计划显示在顶部之前发生的连接)
  2. (几乎)更重要的是,完全匹配不会首先出现在结果中,因为结果集似乎是按主键排序的.

我正在寻找一个将返回的查询(对于TOP 4)

Id | Name
---------
20 | Bob
90 | Bob

(and then 2 results from the LIKE query, e.g. 1 Bobby …
Run Code Online (Sandbox Code Playgroud)

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

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

SQL Server"审核注销"操作需要很长时间.

我们有一个存储过程,全天有15个用户每天调用大约300,000次.我已经倾注了每一条线,它和我能得到的效率一样高.

存储过程通过4.0上的ASP.NET页面从基本Winterms上的旧版VB6应用程序访问.

当我查看SQL跟踪文件时,我看到以下内容:

  1. exec sp_reset_connection(使用连接池)
  2. 审核登录
  3. 执行存储过程
  4. 审核注销

我在第4步看到,读取和写入都很高,这是有道理的,因为它是在池中重用的连接的累积.

我关心的是需要多长时间,有时需要50ms,有时需要400ms,这完全是随机的.从文档中我读到"审核注销"是所有三个步骤的整个持续时间.但步骤1-3非常快,如0-5ms.为什么"审核注销"持续时间需要这么长时间?

asp.net-4.0 sql-server-2008-r2

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

Varchar变量在WHERE子句中不起作用

为什么这样做......

DECLARE @MyInt int = 12345;
SELECT * FROM MyTable WHERE MyId = @MyInt; --Returns 1 row
SELECT * FROM MyTable WHERE MyId = 12345;  --Returns 1 row
Run Code Online (Sandbox Code Playgroud)

但这不是吗?

DECLARE @MyVarchar varchar = 'ABCDEF';
SELECT * FROM MyTable WHERE MyId = @MyVarchar; --Returns 0 rows
SELECT * FROM MyTable WHERE MyId = 'ABCDEF';   --Returns 1 row
Run Code Online (Sandbox Code Playgroud)

SQL Server版本是10.50.1746

sql variables sql-server-2008-r2

13
推荐指数
1
解决办法
6686
查看次数