Montag, 1. August 2022

Remotedesktop vs. Microsoft Account


Das Setting: 

Ihr möchtet von Windows 10 Pro auf einen Rechner mit Windows 11 Pro per Remotedesktop zugreifen, bekommt aber ständig , "Der Anmeldeversuch ist fehlgeschlagen.".

Dabei versucht ihr es mit dem Microsoft-Account (NUTZERNAME@live.de) und seid euch ganz sicher, dass Benutzername und Passwort stimmen.

Eine Verbindung zu einem Windows 10 Pro mit dem Microsoft-Account funktioniert hingegen einwandfrei. 


Wie kommt ihr weiter?

Drückt Windows+R und gebt ein: 

runas /u:MicrosoftAccount\NUTZERNAME@live.de cmd.exe

Dann OK. Es öffnet sich die Eingabeaufforderung und verlangt nach dem Windows-Kennwort. Gebt es ein, und die Remotedesktopverbindung funktioniert wieder.


Warum passiert das?

Das passiert, wenn ihr mit dem Microsoft-Account arbeitet (was ja bei Windows 11 der Standard ist). Offenbar benötigt Windows 11 da nochmal einen Tritt, um den lokalen Account mit dem Cloud-Account abzugleichen. 

Quelle: Remote Desktop: Fehler bei Anmeldung mit Microsoft Konto

Mittwoch, 20. April 2022

SQL: Alle Tabellen, Felder, Datentypen + 0 ja/nein

Will man sich einen Überblick darüber verschaffen, wie eine Datenbank aufgebaut ist, ist es unter Zuhilfenahme von sysobjects und syscolums ganz gut möglich. Auch die Länge der Felder ist auswertbar. 

Ich habe allerdings ein bisschen Lebenszeit verbraucht, um das Problem der Maximallänge bei Feldern des Datentyps nvarchar zu begreifen.

Problem: Die Länge des Feldes steht normalerweise in syscolumns im Wert length. Allerdings ist der Wert  bei nvarchar nicht korrekt. Um genaz genau zu sein, ist der doppelt zu groß.


Ursache: Zitat: 

... a column that is declared to be varchar(10) will show 10 in that column.  A column that is nvarchar(10) will show 20 in that column since each nvarchar character takes 2 bytes.  If the value of the max_length is -1 then the column  was declared as varchar(max), nvarchar(max), or varbinary(max).

Quelle: Tom via msdn


Lösung:

OK, das Problem mit "(max)" und dem darauf folgendem "-1" und ist mir nicht so wichtig, aber die maximale Länge von begrenzten Textfeldern schon. 

Also sieht meine Abfrage so aus:

select 
	Tabellenname = dbo.sysobjects.name
	, Spaltenname = dbo.syscolumns.name
	, Datentyp = sys.types.name
	, Laenge = 
		case when sys.types.name = 'nvarchar' then dbo.syscolumns.length / 2
		else dbo.syscolumns.length 
		end
	, Null_OK = dbo.syscolumns.isnullable
from dbo.syscolumns 
	inner join  dbo.sysobjects on dbo.syscolumns.id = dbo.sysobjects.id
	left Join sys.types on user_type_id = dbo.syscolumns.xusertype
where (dbo.sysobjects.xtype = 'U') 
order by Tabellenname , Spaltenname

Es könnte jetzt natürlich noch eleganter sein, da ja die Werte bei beispielsweise bit und datetime was völlig anderes meinen, aber in meiner Welt sind "bit" und "datetime" hinreichend eindeutig für eine Schnittstellen-Konzeption.


Farbe ist das neue Schwarz

Das gute alte Batch - sie funktioniert und tut, aber leider ist sie so schwarz und unschön. Dabei gibt es von (nahezu) Anfang an die Möglich...