instalar - ¿Cómo eliminar las entradas del servidor en la pantalla "Conectar con el servidor" de SQL Server Management Studio?
sql server management studio 2012 (3)
Lamentablemente, no parece posible (o al menos práctico) eliminar solo ciertos elementos.
Sin embargo, si lo desea, puede restablecer la configuración y comenzar desde cero.
Asegúrese de que Management Studio esté cerrado, luego elimine o cambie el nombre de este archivo:
%APPDATA%/Microsoft/Microsoft SQL Server/100/Tools/Shell/SqlStudio.bin
Tenga en cuenta que ese archivo contiene otras configuraciones de preferencia de usuario, por lo que si ha personalizado su configuración de Management Studio, tendrá algo de trabajo para restaurarlas.
Referencia: http://social.msdn.microsoft.com/Forums/en-US/sqltools/thread/94e5c3ca-c76d-48d0-ad96-8348883e8db8/
¡Buena suerte!
Posible duplicado:
Cómo eliminar elementos de "Nombre del servidor" del historial de SQL Server Management Studio
En la pantalla "Conectarse al servidor", SQL Server Management Studio almacena todas las entradas que haya ingresado para Nombre de servidor, inicio de sesión y contraseña. Esto es muy útil, pero de vez en cuando las cosas cambian, las direcciones de los servidores cambian, las bases de datos ya no están disponibles.
¿Cómo puedo eliminar las entradas del servidor desde esta pantalla? Además, cuando selecciona un servidor, los inicios de sesión pasados están disponibles en la lista. Una vez más, estos cambian. ¿Cómo puedo eliminar entradas de usuario?
Tomé el código de la publicación de @ arcticdev y lo convertí en una aplicación de consola. Se puede descargar here la aplicación espera que SqlStudio.bin
esté en la carpeta en la que se ejecuta la aplicación y la OVERWRITE (haga una copia de seguridad) y toma el nombre del servidor como argumento.
Probado en Windows 7 (x64) y SSMS 2008.
Parece que este archivo es una versión binaria serializada de la clase Microsoft.SqlServer.Management.UserSettings.SqlStudio
definida en el ensamblado Microsoft.SqlServer.Management.UserSettings, Version = 10.0.0.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91 (ubicado en c : / Archivos de programa / Microsoft SQL Server / 100 / Tools / Binn / VSShell / Common7 / IDE / Microsoft.SqlServer.Management.UserSettings.dll ).
Con un poco de habilidad de desarrollo (Visual Studio o incluso Powershell) puede deserializar este archivo en la clase original, encontrar las entradas que desea eliminar y volver a serializar el archivo de nuevo.
Esto debería darle la idea (trabajando en una copia del archivo .bin) ...
var binaryFormatter = new BinaryFormatter();
var inStream = new MemoryStream(File.ReadAllBytes(@"c:/temp/SqlStudio.bin"));
var settings = (SqlStudio) binaryFormatter.Deserialize(inStream);
foreach (var pair in settings.SSMS.ConnectionOptions.ServerTypes)
{
ServerTypeItem serverTypeItem = pair.Value;
List<ServerConnectionItem> toRemove = new List<ServerConnectionItem>();
foreach (ServerConnectionItem server in serverTypeItem.Servers)
{
if (server.Instance != "the server you want to remove")
{
continue;
}
toRemove.Add(server);
}
foreach (ServerConnectionItem serverConnectionItem in toRemove)
{
serverTypeItem.Servers.RemoveItem(serverConnectionItem);
}
}
MemoryStream outStream = new MemoryStream();
binaryFormatter.Serialize(outStream, settings);
byte[] outBytes = new byte[outStream.Length];
outStream.Position = 0;
outStream.Read(outBytes, 0, outBytes.Length);
File.WriteAllBytes(@"c:/temp/SqlStudio.bin", outBytes);
Después de la pregunta de Adrian, intenté esto de nuevo en una caja Win7 x64 usando Visual Studio 2010. Encontré el mismo error, así que, después de cavar un poco, descubrí que se necesitaban varios pasos para resolverlo.
- Establezca el objetivo de la plataforma en ''x86'' en las propiedades del proyecto
- agregue una referencia a Microsoft.SqlServer.Management.SDK.SqlStudio (en mi casilla esto fue en c: / Archivos de programa / Microsoft SQL Server / 100 / Tools / Binn / VSShell / Common7 / IDE / Microsoft.SqlServer.Management.Sdk. SqlStudio.dll)
- agregar una referencia a Microsoft.SqlServer.Management.UserSettings (en el mismo directorio en el anterior)
- realizar una resolución de ensamblaje personalizada
La resolución del conjunto personalizado tomó algo de tiempo, ya que no era obvio (para mí, al menos) por qué el CLR no solo resolvería el ensamblado correctamente y por qué Visual Studio no me permitiría agregar la referencia manualmente. Estoy hablando de SqlWorkbench.Interfaces.dll.
El código actualizado se ve así:
internal class Program
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
var binaryFormatter = new BinaryFormatter();
var inStream = new MemoryStream(File.ReadAllBytes(@"c:/temp/SqlStudio.bin"));
var settings = (SqlStudio) binaryFormatter.Deserialize(inStream);
foreach (var pair in settings.SSMS.ConnectionOptions.ServerTypes)
{
ServerTypeItem serverTypeItem = pair.Value;
List<ServerConnectionItem> toRemove = new List<ServerConnectionItem>();
foreach (ServerConnectionItem server in serverTypeItem.Servers)
{
if (server.Instance != "the server you want to remove")
{
continue;
}
toRemove.Add(server);
}
foreach (ServerConnectionItem serverConnectionItem in toRemove)
{
serverTypeItem.Servers.RemoveItem(serverConnectionItem);
}
}
MemoryStream outStream = new MemoryStream();
binaryFormatter.Serialize(outStream, settings);
byte[] outBytes = new byte[outStream.Length];
outStream.Position = 0;
outStream.Read(outBytes, 0, outBytes.Length);
File.WriteAllBytes(@"c:/temp/SqlStudio.bin", outBytes);
}
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
Debug.WriteLine(args.Name);
if (args.Name.StartsWith("SqlWorkbench.Interfaces"))
{
return Assembly.LoadFrom(@"C:/Program Files (x86)/Microsoft SQL Server/100/Tools/Binn/VSShell/Common7/IDE/SqlWorkbench.Interfaces.dll");
}
return Assembly.Load(args.Name);
}
}