如何使用T-SQL脚本获取当前连接的SQL Server服务器和实例名称?
我正在尝试从本地计算机上的SQL Server Management Studio访问我的VPS上的SQL Server实例.它不起作用(我得到的错误是:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.
我想这是因为我需要配置数据库引擎以允许远程连接(如果我错了,请纠正我!).所以我找到了这个循序渐进的指南来帮助我做到这一点:http://www.linglom.com/2009/03/28/enable-remote-connection-on-sql-server-2008-express/我必须在指南中指出10点,我现在卡住了!我的VPS上没有安装SQL Server Management Studio.无论如何,这给我留下了两个选择:
我尝试使用Web平台安装程序在我的VPS上安装SSMS但它仍然失败.我不知道它为什么失败,因为它似乎没有给出原因.有谁知道我怎么能以不同的方式允许远程连接?
我的VPS上安装的SQL Server版本是SQL Server 2008 R2 Express.
更新:
我试图在我的笔记本电脑和VPS上禁用防火墙,看看它是否是防火墙问题.这对错误消息没有任何影响.
另一个更新:
现在已经能够安装SSMS(我直接从网站安装而不是使用WPI),我已经能够检查服务器是否配置为允许远程连接(我去了SSMS,连接到SQL Server实例,右单击连接,单击属性,转到Connections选项卡."已允许远程连接到此服务器".
解
感谢大家帮助我找到这个解决方案!我终于设法让它上班了!我按照Filip De Vos的建议,在我的VPS上打开防火墙端口,然后收到了不同的错误消息.这导致我进一步调查,我发现我使用了错误的凭据登录!所以我为sa用户设置了密码,我已经设法使用它进行登录!再次感谢!
我正忙着运行SQL Server 2008 R2 Express的一个特定的盒子.
当我尝试连接时xxx.xxx.xxx.xxx\sqlexpress
,它会超时,并出现以下错误:
标题:连接到服务器
无法连接到xxx.xxx.xxx.xxx\SQLEXPRESS.
附加信息:
建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:26 - 找到指定的服务器/实例时出错)(Microsoft SQL Server,错误:-1)
我已经检查过服务器上是否允许远程连接.
我已确认在SQL Server配置中启用并配置了TCP/IP,以允许外部IP上的连接到1433.
我还使用了本地机器上的Wireshark,我可以看到1433 UDP请求进入远程服务器.
但是在远程服务器上使用Wireshark没有显示1433 UDP的入站连接请求或来自我的外部IP的任何入站连接请求(从结果过滤到远程RDP).
这让我觉得这是一个防火墙问题.
服务器由外部公司托管,该公司在我们的服务器前控制PIX.
我需要尽可能地解决这个问题,因为托管公司不知道他们在做什么.
最近刚刚升级到SQL Server 2008 R2 Express.当我使用Windows身份验证使用我的id roger.moore登录后尝试创建数据库时,我收到此错误:
执行Transact-SQL语句或批处理时发生异常.(Microsoft.SqlServer.ConnectionInfo)
数据库'master'中的CREATE DATABASE权限被拒绝.RESTORE HEADERONLY异常终止错误262
如果我尝试将sysadmin角色添加到roger.moore,这是我收到的错误:
为ServerRole"sysadmin"添加成员失败.(Microsoft.SqlServer.Smo)
执行Transact-SQL语句或批处理时发生异常.(Microsoft.SqlServer.ConnectionInfo)
用户无权执行此操作错误15247
如果我尝试使用此命令将此角色添加到我的用户,请使用此命令,
EXEC sp_addsrvrolemember 'ziffenergy\myuser', 'sysadmin';
GO
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
消息15247,级别16,状态1,过程sp_addsrvrolemember,行29
用户无权执行此操作.
有没有人有什么建议?看来我在本地机器上无法对数据库做任何事情.请注意,我是我正在使用的Windows 7工作站的管理员,如果我尝试使用SQL Server Management Studio在我们的网络IT测试数据库服务器上创建或修改数据库和/或用户,我可以毫无问题地执行此操作.
当我尝试从SQL Server 2008 R2 Express升级到SQL Server 2008 R2 Enterprise时,它通过了所有测试,然后在步骤"选择功能"时失败,说出以下错误:
没有选择升级功能.
并出现一个窗口错误消息:
此页面上存在验证错误.单击"确定"关闭此对话框.查看设置页面按钮上的错误,然后提供有效参数或单击帮助以获取更多信息.
是可以继续还是我需要备份,卸载Express然后安装新的企业版?
windows sql-server upgrade sql-server-2008-r2 sql-server-2008r2-express
我正在尝试将Reporting Services添加到我已安装的SQL Server Express 2008 R2版本中.我正在Windows Server 2008 R2标准版盒子上安装它.
我何时运行安装程序以添加额外功能未列出报告服务.
我已经安装(我认为)所有先决条件需要IIS,ASP等但无济于事.报告服务在我的功能列表中不可见.
有任何想法吗?
升级到Service Pack 1后,有时我无法登录我的服务器
此时,Server Configuration Manager如下所示
我需要改变什么吗?谢谢.
-
登录后,Server Configuration Manager就像下面一样
在失败时,我尝试启动"SQL Server(MSSQLSERVER)"但无法启动.我的R2快递有什么问题?请与我分享你的想法.
运行"SQL Server(MSSQLSERVER)"后,我可以以"sa"身份登录我的服务器.
select packageid,status+' Date : '+UpdatedOn from [Shipment_Package]
Run Code Online (Sandbox Code Playgroud)
在sql server中执行上述代码时出现以下错误.UpdatedOn
is DateTime
和status 的类型是a varchar
.我们想要连接状态,Date和UpdatedOn.
错误:
从字符串转换日期和/或时间时转换失败.
警告:这个悲惨的故事包含代码气味和糟糕的设计决策以及技术债务的例子.
如果您熟悉SOLID原则,请练习TDD并对您的工作进行单元测试,请勿阅读.除非你想要对某人的不幸进行一次好的傻笑,并且在你自己很棒的事情中幸灾乐祸地知道你永远不会为你的继任者留下如此巨大的废话.
所以,如果你坐得舒服,我会开始.
在这个应用程序中,我已经继承并一直支持和修复过去7个月的错误,我被一个开发人员留下了6个半月之前留下了一大堆.是的,我开始后2周.
无论如何.在这个程序,我们有clients
,employees
和visits
表.
还有一个名为AppNewRef
(或类似的东西)的表......等待它...包含用于其他每个表的下一个记录ID.因此,可能包含以下数据: -
TypeID Description NextRef
1 Employees 804
2 Clients 1708
3 Visits 56783
Run Code Online (Sandbox Code Playgroud)
当应用程序为其创建新行时Employees
,它会在AppNewRef
表中查找,获取值,使用该值作为ID,然后更新NextRef
列.同样的事情Clients
,以及Visits
所有其他NextID
使用的表存储在这里.
是的,我知道,IDENTITY
这个数据库上没有自动编号列.所有这些都是"当它是一个Access应用程序"的借口.这些ID保存在(VB6)代码中.因此,可能有多达20亿1.47亿条记录.好的,这似乎运作得相当好.(除了应用程序正在更新和处理锁定/更新等事实,而不是数据库)
因此,我们的用户是很愉快地创造Employees
,Clients
,Visits
等Visits ID
稳定地逐渐增加了几十个.然后问题就发生了.我们的客户在创建批量访问时会导致数据库损坏,因为服务器很好地丢失了,应用程序变得没有响应.因此,他们使用任务管理器杀死应用程序,而不是耐心等待.当然,该应用似乎确实锁定了.
转到今年早些时候,开发人员蒂姆(真实姓名.没有保护有罪的人)开始修改代码以分阶段进行批量更新,以便UI保持"响应".然后四月来了,他正在做他的通知(你现在可以想象现场,不是吗?)他正在努力完成更新.
4月底,5月初我们更新了一些客户.在接下来的几个月里,我们会越来越多地更新它们.
蒂姆(真名,记得)和我(在蒂姆离开前两周开始)以及一周后开始的另一位新开发者看不见,访问表中的ID开始向上跳跃.巨大的,我的意思是10000,20000,30000一次.有时几十万.
这是一个图表,说明了使用的ID的快速增长.
11月滚.客户致电技术支持并报告他收到了错误消息.我查看错误消息并询问数据库,以便我可以调试代码.我发现这个值太大了很长时间.我做了一些查询,提取信息,将其放入Excel并绘制图形.
我不认为使代码处理的时间长于ID,这是正确的方法,因为这个应用程序将该ID传递给其他DLL和OCX,并打破那些看起来像是一个整个世界的伤害我不喜欢我现在想要遇到.
我正在研究的一个潜在想法是尝试修改ID,以便我可以将它们降低到更低的水平.基本上填补了空白.使用该ROW_NUMBER
功能
我正在考虑做的是为每个表添加一个新列,这些表具有对这些访问ID的外键引用(不是正确的外键思维,这个数据库中不存在这些约束).这个新列可以存储访问ID的旧(当前)值(哦,只是为了混淆事情;在某些表上调用它EventID
,以及在某些表上调用它VisitID
).
然后,对于引用它的每个其他表VisitID
,更新为新值.
想法?建议?T-SQL的片段帮助所有人感激不尽.
我正在使用SQL Server 2008 R2 Express,当我从客户端pc使用SQL Server调试功能时,会发生以下错误:
对象'sp_enable_sql_debug',数据库'mssqlsystemresource',架构'sys'上的EXECUTE权限被拒绝.(Microsoft SQL Server,错误:229)
我的用户名为'HALI',我的权限分配给'public'和'db_Owner',
现在在此错误之后我已经分配了所有可用权限.以及所有服务器角色.
现在,此时我收到了新的错误消息,
错误HRESULT E_FAIL已从调用COM组件返回.(mscorlib程序)
现在解决这个错误的方法是什么.