在开始安装MSSQLSERVER之前,我想知道系统中是否已经安装了MSSQLSERVER。这应该在C ++或mfc中以编程方式完成。
如果已经在Windows中安装了MSSQLServer,那么有没有办法获取该服务器的MSSql凭据?
如果是,请解释实现这一目标的方法吗?
更新
我尝试在我的系统中安装sqlserver 2005和sql server 2008,但两台服务器都已安装。我检查了注册表路径,但它包含SOFTWARE\Microsoft\Microsoft SQL Server\90
的{{1}}和MSSQLServer 2005
的{{1}}。安装我的MSSQLServer之前如何检查是否安装了任何MSSql Server版本或不?
修改
直到现在,我在c ++中以编程方式安装了SQLSERVER。
我发布了以下代码:
SOFTWARE\Microsoft\Microsoft SQL Server\100
答案 0 :(得分:1)
<强> BUT 强>
如果您是本地管理员 - 您可以使用启动密钥-f从命令行启动sql server并尝试使用它 - 但不能保证,但您可以尝试。
我有一个代码检查sql server实例的一些默认值,因此可以很容易地根据你的需要采用c ++ /
private void GetSqlDefaultInfo(string ServerName, string InstanceName)
{
InstanceName = string.IsNullOrEmpty(InstanceName) ? "MSSQLSERVER" : InstanceName;
if (string.IsNullOrEmpty(ServerName))
ServerName = Environment.MachineName;
using (var registryKey = RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, ServerName))
{
object sqlInstance;
using (var subKey = registryKey.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL"))
sqlInstance = subKey.GetValue(InstanceName);
if (sqlInstance != null && !string.IsNullOrEmpty(sqlInstance.ToString()))
{
var sqlPathKey = string.Format(@"SOFTWARE\Microsoft\Microsoft SQL Server\{0}\MSSQLServer",
sqlInstance);
object defaultData, defaultLog, backupDirectory, sqlPath;
using (var subKey = registryKey.OpenSubKey(sqlPathKey))
{
defaultData = subKey.GetValue("DefaultData");
defaultLog = subKey.GetValue("DefaultLog");
backupDirectory = subKey.GetValue("BackupDirectory");
}
sqlPathKey = string.Format(@"SOFTWARE\Microsoft\Microsoft SQL Server\{0}\Setup", sqlInstance);
using (var subKey = registryKey.OpenSubKey(sqlPathKey))
sqlPath = subKey.GetValue("SQLDataRoot");
DataFilePath = defaultData != null
? defaultData.ToString()
: Path.Combine(sqlPath.ToString(), "Data").TrimEnd('\\');
LogFilePath = defaultLog != null
? defaultLog.ToString()
: Path.Combine(sqlPath.ToString(), "Data").TrimEnd('\\');
FTSIndexFilePath = DataFilePath;
ContentFilePath = DataFilePath;
BackupFilePath = backupDirectory != null
? backupDirectory.ToString()
: Path.Combine(sqlPath.ToString(), "Backup").TrimEnd('\\');
}
}
}