首先,我知道我得到的错误可以通过创建引用项目(数据库服务器类型)然后在我的数据库项目中引用它来解决...但是,我觉得这有点矫枉过正,特别是对于小团队而言开发人员和数据库管理员之间没有特定的角色分离.但是,让我们再讨论一下这个问题...... DAC也是如此......不能使用受支持的有限对象的DAC b/c ...
问题 现在,问题是:我可以(以及如何)在构建我的数据库项目时禁用SQL03006错误.在我的情况下,生成此错误是因为我正在创建一些登录"未解决"的用户...我认为这应该是可能的,我希望,因为我"知道"在部署脚本之前服务器上将存在登录. .我也不想维护数据库服务器项目,所以我可以保持refs解决(除了服务器级别的登录,我什么都没有)...
解决方法 使用前/后部署脚本,让secript工作是微不足道的......
解决方法问题 您必须注释掉用户脚本(使用登录引用)以进行解决方法...一旦您这样做,.sqlpermissions就会弹出,说没有引用的用户......然后您必须注释权限并将它们放在post deploy脚本中......这种解决方法的主要缺点是你无法在最大程度上利用模式比较(你必须指定忽略用户/登录/权限)
所以我想要的只是1.仅维护DB项目(不引用DB Server项目)2.禁用/禁止SQL03006错误3.能够在我的DB项目中使用模式比较
我要求不可能吗?:)
干杯
PS如果有人知道更好的VS2010数据库项目模板/工具(对于SQL Server 2008 R2),请分享...
这行代码是我的select语句的一个片段.
frdFreedays - DateDiff(dd,conReceiptToStock,GetDate()) As FreeDaysRemaining
Run Code Online (Sandbox Code Playgroud)
下面是我的where子句的片段
and frdFreedays - DateDiff(dd,conReceiptToStock,GetDate()) <= @intFreeDays
Run Code Online (Sandbox Code Playgroud)
我的问题是如何引用FreeDaysRemaining列,因此我可以将它与@进行比较intFreeDays
我正在寻找这样的东西
Freedays <= @intFreeDays
Run Code Online (Sandbox Code Playgroud) 删除SQL Server 2008 R2 Express后,我安装了SQL Server 2008 R2的评估版.卸载后仍可访问SQL Server配置管理器,但现在无法再使用此错误访问它:
无法连接到WMI提供程序.您没有权限或服务器无法访问.请注意,您只能使用SQL Server配置管理器管理SQL Server 2005服务器.无效的班级[0x80041010]
该文件位于我的PC上sqlmgmproviderxpsp2up.mof的文件夹中C:\Program Files (x86)\Microsoft SQL Server\100\Shared.我试图输入命令提示符:
C:\Program Files (x86)\Microsoft SQL Server\100\Shared>mofcomp "C:\Program Files (x86)\Microsoft SQL Server\100\Shared\sqlmgmproviderxpsp2up.mof"
Run Code Online (Sandbox Code Playgroud)
但仍然得到访问被拒绝错误.我无法找到这个问题的答案,有没有人有任何想法?
我的应用程序(C#,ASP.Net)需要在数据库中插入,更新和删除数据,并运行存储过程.我需要阻止它修改数据库模式 - 不更改表,创建或删除,不存储过程的更改.
我需要向应用程序用户授予哪些权限组合?只是'select'不起作用,因为它需要在表中插入/更新/删除数据.
如何检查特定登录的权限和访问权限?如何授予或拒绝登录权限和访问权限?我需要授予新用户(登录)权限才能访问一个数据库.
使用SQL Server 2008 R2和SSMS.
我的示例查询是
SELECT D30.SPGD30_LAST_TOUCH_Y
from CSPGD30_TRACKING D30
Run Code Online (Sandbox Code Playgroud)
我给出的日期格式就像"2013-01-01 00:00:00.000".我需要将此日期格式转换为"mm/dd/yyyy hh:mm AM/PM".你对此有什么想法吗?
sql sql-server sql-server-2005 sql-server-2008 sql-server-2008-r2
我编写了一个查询来删除表中的重复记录
;WITH a as
(
SELECT Firstname,ROW_NUMBER() OVER(PARTITION by Firstname, empID ORDER BY Firstname)
AS duplicateRecCount
FROM dbo.tblEmployee
)
--Now Delete Duplicate Records
DELETE FROM tblEmployee
WHERE duplicateRecCount > 1
Run Code Online (Sandbox Code Playgroud)
但我不知道我说错了
列名无效
duplicateRecCount
有人能帮我吗?
我有一个存储过程,我试图选择表的所有列表1.还有另一个表使用Table1主键作为外键.我想用这个选择计算这个外键表中的记录数,如下所示:
SELECT *, count(*) VacancyCount
FROM Table1 hc
LEFT JOIN Table2 hv
on hc.CompanyID = hv.CompanyID
WHERE hc.Deleted = 0
group by hc.CompanyID
ORDER BY NameLang1
Run Code Online (Sandbox Code Playgroud)
但它给出了错误:
列'dbo.Table1.NameLang1'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.
请建议如何解决这个问题?
我对SQL Server 2008 R2上的存储过程有一个非常奇怪的问题.有时,每个月大约一次,我有一个变得非常慢的过程,运行大约需要6秒而不是几毫秒.但是,如果我只是重新编译它,而不改变任何东西,它会再次快速运行.它不会发生在所有存储过程中,只有一个(服务器上有几百个).
我的猜测是sp编译时,它被缓存,每次调用它时都会重用这个缓存,并且这个缓存版本由于某种原因而被破坏.
我希望也许有些人已经遇到过这种问题,或者至少可以指出我正确的方向,比如SQL Server或IIS的哪些配置会影响存储过程缓存?
这是代码:
USE [MyBaseName]
GO
/****** Object: StoredProcedure [dbo].[Publication_getByCriteria] Script Date: 05/29/2013 12:11:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Publication_getByCriteria]
@id_sousTheme As int = null,
@id_theme As int = null,
@nbPubli As int = 1000000,
@bActuSite As bit = null,
@bActuPerso As bit = null,
@bActuNewsletter As bit = null,
@bActuChronique As bit = null,
@bActuVideo As bit = null,
@bActuVideoBuzz As bit = null,
@bActuOpportunite As bit = …Run Code Online (Sandbox Code Playgroud) 我正在尝试启用迁移,但它正在抛出异常:
检查上下文是否以现有数据库为目标... System.TypeInitializationException:'System.Data.Entity.Migrations.DbMigrationsConfiguration`1'的类型初始值设定项引发异常.---> System.TypeInitializationException:'System.Data.Entity.Internal.AppConfig'的类型初始值设定项引发了异常.---> System.Configuration.ConfigurationErrorsException:配置系统初始化失败---> System.Configuration.ConfigurationErrorsException:必须在'section'标签上指定'name'属性.
我假设App.config文件没有正确设置(当我添加EF包时它自动设置).我所做的就是添加连接字符串:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section Name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
<connectionStrings>
<add Name="MyContext" connectionString="data source=MYSERVER;initial catalog=CodeFirstTest;user id=***;password=***;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我正在使用SQL Server 2008 R2.
因为我有一个连接字符串,我不相信我需要defaultconnectionfactory.我对么?(注意:即使没有本节,我仍然会得到相同的例外)
我还缺少什么?
我们希望在锁定等待时间超过60秒时发出警报.下面的警报脚本正在按预期执行.
但是我们希望获得更多信息,例如锁定的会话ID,锁定状态,登录名等.
有没有办法在@notification_message中包含这个?
USE [msdb]
GO
EXEC msdb.dbo.sp_update_alert @name=N'Total Lock Wait Time (ms) > 60000',
@message_id=0,
@severity=0,
@enabled=1,
@delay_between_responses=0,
@include_event_description_in=1,
@database_name=N'',
@notification_message=N'',
@event_description_keyword=N'',
@performance_condition=N'MSSQL$DB:Locks|Lock Wait Time (ms)|_Total|>|60000',
@wmi_namespace=N'',
@wmi_query=N'',
@job_id=N'00000000-0000-0000-0000-000000000000'
GO
EXEC msdb.dbo.sp_update_notification
@alert_name = N'Total Lock Wait Time (ms) > 60000',
@operator_name = N'me',
@notification_method = 1
GO
Run Code Online (Sandbox Code Playgroud) sql ×3
sql-server ×3
c# ×1
c#-4.0 ×1
datadude ×1
duplicates ×1
locks ×1
t-sql ×1
user-roles ×1