如何获取SQL server数据库的连接字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获取SQL server数据库的连接字符串相关的知识,希望对你有一定的参考价值。

第一步:创建向导文件
在桌面创建一个txt文件,并将文件后缀改成“.udl”。

第二步:选择“提供程序”tab页
双击新创建的“.udl”文件,进入后选择“提供程序”tab页,选择“Microsoft OLE DB Provider for SQL Server”。

第三步:设置“连接”
第二步后,选择“下一步”按钮,进入“连接”tab页,在“1.选择或输入服务器名称(E)”输入“.”,然后选择“2.输入登录服务器的信息”,在“第3”选择“在服务器上选择数据库”。

第四步:测试是否连接成功
在“连接”tab页,点击右下角“测试连接”按钮,测试是否连接成功。

第五步:获取连接字符串
当第四步“测试成功”后,用记事本打开“.udl”文件,获取连接字符串,如图。
参考技术A 步骤:
1、新建一个txt文本文档,然后把后缀名改为udl
2、打开 新建文本文档.udl ,并选择相应的数据库进行连接,之后点击 “测试连接”,成功之后关闭。
3、将后缀名改回txt,打开txt文本文档就可以看到已经创建好了数据库连接字符串了。

使用内部连接时如何在 sql server 中获取计数?

【中文标题】使用内部连接时如何在 sql server 中获取计数?【英文标题】:how to get count in sql server while using inner joins? 【发布时间】:2012-11-03 22:21:30 【问题描述】:

我有以下查询:

SELECT  
   h.helpcontent, s.MenuID, s.pkSitePageId, s.PageAliasName,
   s.SitePageName,s.pagepath
FROM 
   tblSiteRolePermissions p
INNER JOIN 
   tblSitePages s ON p.fkSitePageId = s.pkSitePageId
INNER JOIN 
   tblHelp h ON s.pkSitePageId=h.fkSitePageId
WHERE 
   (p.fkRoleId = 4 AND p.ViewOnly = 1) 
ORDER BY 
   s.pkSitePageId

我想从tblSiteRolePermissions 获得计数。我已经尝试过Count,但它抛出了一些错误,例如:

消息 8120,第 16 层,状态 1,第 1 行 列 'tblHelp.HelpContent' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。

请帮助我,让我知道我错在哪里。

更新

这是我正在尝试的代码:

SELECT 
    count(p.pkRolePermissionId), 
    h.helpcontent, s.MenuID, s.pkSitePageId, s.PageAliasName, 
    s.SitePageName, s.pagepath
FROM
    tblSiteRolePermissions p
INNER JOIN 
    tblSitePages s ON p.fkSitePageId = s.pkSitePageId
INNER JOIN
    tblHelp h ON s.pkSitePageId = h.fkSitePageId
WHERE 
    (p.fkRoleId = 4 AND p.ViewOnly = 1) 
ORDER BY 
    s.pkSitePageId

【问题讨论】:

你要数什么? @PaulAlanTaylor 请查看我的问题,我已经更新了它.. 错误信息与您的示例 SQL 语句不匹配。您的语句中既没有count()(或任何其他聚合函数)也没有group by。请向我们展示产生错误的真实陈述。 @a_horse_with_no_name 请立即查看 您想获取 all 行的计数,还是仅获取单个 fkSitePageId 的计数?还是其他一些属性组合? 【参考方案1】:

如果您使用的是聚合函数,则需要对 SELECT 语句中不在聚合中的剩余字段使用 GROUP BY 子句。类似这样:

SELECT  count(p.pkRolePermissionId) CountRolePermission,
  h.helpcontent, 
  s.MenuID, 
  s.pkSitePageId, 
  s.PageAliasName,
  s.SitePageName,
  s.pagepath
from tblSiteRolePermissions p
INNER JOIN tblSitePages s 
  ON p.fkSitePageId = s.pkSitePageId
inner join tblHelp h 
  on s.pkSitePageId=h.fkSitePageId
WHERE (p.fkRoleId =4 and p.ViewOnly=1) 
GROUP BY h.helpcontent, 
  s.MenuID, 
  s.pkSitePageId, 
  s.PageAliasName,
  s.SitePageName,
  s.pagepath
ORDER BY s.pkSitePageId

如果你想要所有行的计数,那么你可以使用这样的东西:

SELECT  NumRows.TotalCount,
  h.helpcontent, 
  s.MenuID, 
  s.pkSitePageId, 
  s.PageAliasName,
  s.SitePageName,
  s.pagepath
from tblSiteRolePermissions p
INNER JOIN tblSitePages s 
  ON p.fkSitePageId = s.pkSitePageId
inner join tblHelp h 
  on s.pkSitePageId=h.fkSitePageId
cross join
(
  SELECT  count(*) TotalCount
  from tblSiteRolePermissions p
  INNER JOIN tblSitePages s 
    ON p.fkSitePageId = s.pkSitePageId
  inner join tblHelp h 
    on s.pkSitePageId=h.fkSitePageId
  WHERE (p.fkRoleId =4 and p.ViewOnly=1) 
) NumRows
WHERE (p.fkRoleId =4 and p.ViewOnly=1) 
ORDER BY s.pkSitePageId

或者您可以在查询中使用 CTE,类似于:

;with cte as 
(
  SELECT h.helpcontent, 
    s.MenuID, 
    s.pkSitePageId, 
    s.PageAliasName,
    s.SitePageName,
    s.pagepath
  from tblSiteRolePermissions p
  INNER JOIN tblSitePages s 
    ON p.fkSitePageId = s.pkSitePageId
  inner join tblHelp h 
    on s.pkSitePageId=h.fkSitePageId
  WHERE (p.fkRoleId =4 and p.ViewOnly=1) 
)
select h.helpcontent, 
    s.MenuID, 
    s.pkSitePageId, 
    s.PageAliasName,
    s.SitePageName,
    s.pagepath, 
    (select count(*) from cte) as Total
from cte

【讨论】:

@Visions 这意味着您计算的数据由于GROUP BY 而不同。您到底想count() 做什么,这对于确定正确的语法很重要。【参考方案2】:
SELECT count(p.pkRolePermissionId),h.helpcontent, s.MenuID, s.pkSitePageId, s.PageAliasName,
s.SitePageName,s.pagepath
from tblSiteRolePermissions p
INNER JOIN tblSitePages s ON p.fkSitePageId = s.pkSitePageId
inner join tblHelp h on s.pkSitePageId=h.fkSitePageId
WHERE (p.fkRoleId =4 and p.ViewOnly=1) 
GROUP BY h.helpcontent, s.MenuID, s.pkSitePageId, s.PageAliasName,
s.SitePageName,s.pagepath
ORDER BY s.pkSitePageId

【讨论】:

以上是关于如何获取SQL server数据库的连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

获取 MS SQL Server 2008 的连接字符串

如何从 SQL Server Express 获取连接字符串?

如何查看SQL SERVER数据库当前连接数

ASP.NET + SQL SERVER + JSON = 如何在 SQL Server 的两个连接表中获取数据并加载为 JSON?

在 SQL 查询中检索当前 SQL Server 连接字符串

Sql Server 跨服务器连接