 Hi, welcome to Visual Studio Toolbox. I'm your host, Robert Grain, and joining me today is Eric Kang. Hey, Eric. Hi, Robert. How are you doing? Hey, good, pretty good. Eric's here to continue our series on data. You guys may have noticed that we're doing several episodes on data. I did an episode with Scott Klein a couple months ago to talk about what's new in data for developers. We focused on the Cloud stuff, a lot of what's going on in Azure, touched a little bit on SQL. We did an episode a little bit back with Dmitri and Kevin Kanane. Kanane. Kanane. See, I wasn't here to ask him how to pronounce his name. Kevin Kanane on the SQL Server Data Tools, which run inside Visual Studio. You're going to show us how you can do SQL Server from inside Visual Studio code. Yes. In a cross-platform manner. Exactly. Then we have another episode that we're going to do, and I'm not sure if this one's going to be before that one or that one's before this one. So don't hold me to the order. But we'll do another episode on, it's going to be SQL Server and Connectors, which is how you can talk to SQL Server from additional languages that you would be doing for inside Visual Studio or code like PHP, Node, etc. Yes. Node.js, JDBC, all that matter. So I want to actually show this one. So this is the one thing that you should remember as a developer aka.ms, a SQL Dev. All right. So this site actually has all the getting started and building your app with a SQL Server with Node.js, PHP, all that matter there. Right. Also it has the cross-links for the useful docs and then the tools site. Yeah. So this is the URL that you need to remember. There's just amazingly cool stuff going on in SQL Server. Some people might be back from the world from a few years back where you just talk to SQL Server, it's just sitting on some server somewhere, it was databases, you just put a connection to it, you had data in there, and you never really cared what version was running there, is it running on Windows, which version of server who cares, because you're just talking to SQL Server. But those days are long gone now. There's an awful lot more that's been going on, and the types of apps we're building are very different. We've got SQL Server running on Linux, we've got the ability to talk to SQL Server from multiple languages on multiple platforms from multiple tools. Right. And so we're trying to give everybody a really good grounding in that on this show. Yeah, exactly. Yeah, we are all on developer focus. So that's one thing. So with that, you can understand why we have a SQL Dev site. Yeah, right. We talk about those PHP, JDBC, Node.js. Now you can understand that we focus on the developers. Right. And we want them to develop their apps with a SQL Server. Cool. Yes. All right. So talk to us about Visual Studio Code. Okay. So let's switch to the slide that I prepared. Okay. So today's session, we are going to talk about the SQL Server Vnext. The Vnext runs on Linux, Mac OS with a Docker container, and Windows equally everywhere. Okay. And so when you say Vnext, do you mean it hasn't shipped yet? Oh, it hasn't shipped yet. Right now, in November 16th with a connect event, we released the CDP1 public page. Okay. All right. Yes. So that's the stage. Got it. And the SQL extension for Visual Studio Code is the main topic that we're going to talk about as a tooling perspective. Visual Studio Code, as you know, it is a light weight editor-based developer tool. Yeah. Which is very popular in the developer community. Right. And then another usage is like a full-featured ID perspective like a Visual Studio. Right. It's kind of a choice for the developer. Yeah, it's about the workflow. Some people and I'm in that group like a fully-featured workflow that happens all inside the IDE. I love wizards. I love things that write my code for me. I don't want to have to drop down to the command prompt and I don't even want to have to go out to, you know, outside of Visual Studio to be typing. That's just me. There are others who like more of a less integrated workflow. They do the exact same amount of work. Of course, talk to the exact same things, but do it more from a command-based mixing and matching various tools as a Visual Studio code as far. So one thing that I read from a blog on the internet, it is that excellent editor plus a great runtime to run your app is what developer needs, right? So that makes sense. So Visual Studio Code fits in that bucket very well. And when you build an application and there is the data for application, right? And you have a choice for storing the data and processing the data. SQL Server is one great choice that you can store your application data and do the data processing. And it's part of your application, basically. And when you build your application using a VS Code or Visual Studio, then you need to be able to have a equivalent solution for your database port. So MS SQL extension comes in that picture. Okay, and this is one of the Visual Studio Code extensions, available for a while. We released the preview version, public preview on November 16th. So November 16th was a big launching day. SQL Server VNX that runs on everywhere. And we released MS SQL extension that runs on VS Code, that runs on the Mac, Linux and Windows. And we also released the command line tools that you can use it to run the routine task in script like a batch script. Or you can automate it for the task. Or you can also SSH in like a terminal in to the machine that runs your server and run command, right? So that's basically kind of a whole portfolio and picture in tools perspective, how we can help developers and admins to, you know, use our tools to develop the apps and using it. Yeah, I hear that, and I go, well, why wouldn't I just use SQL Server Management Studio? Oh, that SQL Server Management Studio is also great. On same day, we released the SQL Server Management Studio version 17.0, we version bumped from 16.0 to 17. That distinguishes the, or signifies that that version starts supporting SQL Server vNext. Ah, okay. So key thing is that even though you're using Windows to manage or develop your application, it doesn't matter, independently you can run SQL Server on Mac, Linux and Windows, right? Right. So SSMS has the capability to connect and run your task on any SQL Server platform and version. That matter. So you equally SQL Server Data Tools that Kevin and Dimitri did a presentation in the previous session. That has also version 17.0 released. And it supports SQL Server vNext everywhere. Cool, yeah. All right. Okay. Okay, so just to quickly repeating, the focus of our team is we really want to help our user to develop with SQL Server, Azure SQL Database, and Azure SQL Data Warehouse anywhere, right? In a simple and very productive way. So whenever we design our product in tools side, the key thing is like it has to be simple and it has to be productive. That's a key principle that we always think in our team. So to do that, there is the two things, two important things to deliver. One is the SQL Server should run on Mac, Linux, and Windows, right? So that was one. And the other one is that as we just briefly talked about, the developer's tool should run on those multi OS independently from where your SQL Server is running. So the answer to the question on November 16 we released the SQL Tools portfolio with MS SQL extension and cross-platform support for those command line interfaces and all that. So now we have many choices as a developer, right? So I just to summarize it. And the way that we look at it here is like this. You're a developer. I want to develop my application and database on let's say Linux and Mac. Oh, go use MS SQL extension of Visual Studio Code. That's your choice. It's great. It's lightweight, but it provides the must have features like a connect to SQL Server, right? It's called code with intelligence and beautiful language service there and execute and view result. Cool. That's the core. Let's see it. Yeah, so let's take a look at it and I'm going to go. So let's switch to the demo then the case, right? So for this demo I'm going to use the sample database that we have published in the GitHub SQL Server samples. This is the samples GitHub repository. You can go and the clone, just do copy and run a git clone and paste to this URL. They will pull down all the SQL Server samples to your Mac. Let's see. Okay. And once you do that and let's go to VS Code. The first step is that I already pulled down those projects which is called the Belgrade product catalog database. The main reason is Belgrade is that we have a team in Serbia, Belgrade, and the Jovan in the team actually made this application. What it does is that basically it is a ASP.NET core application with using jQuery to query the SQL Server. Okay. And it shows the new feature like a JSON data and function support. Nowadays all the data handling is JSON format. Now it's right. So SQL Server has a built-in feature to support JSON data and the processing feature. So it demonstrates that one and temporal table. Have you heard about the temporal table? I've heard it. Okay, great. The term that's just refresh. I see temporal is more like, for example, if you're working in like a ERP solution, that means a history of employee history, employee, right? That's very important. So that we can always look at, okay, the person was in this job position, but in next year, he got promoted. So he became like a CEO of the company. Then there is always history information for that. If you do like online the sales, online sales web application, then you have a product and you should have a list of product and history and you wanna see what has happened in your business and all that kind of stuff. So historical data is very important. And if you try to build that logic in your application, it can be pretty complex. But using SQL Server, temporal table is doing the vergening of your data automatically by simply just to set the system vergening flag on your table and link up to your main table and the system table. So it's a pretty cool feature. So the demo shows that one and the security features like dynamic data masking and the role level security. Those are also the features that if you want to build in your application using your app logic, pretty complex, but the SQL Server supports that feature just out of box. So this demo actually shows those one. So let's quickly take a look at the other app and then the jump into data side, right? So that if you don't do that, then the developers would feel like, oh, too much data. Yeah, as you say at the beginning. So I will just entertain you a little bit at the beginning. So I already downloaded it and if you go to Integrated Terminal, VS Code has all nice features like it can run command within the VS Code. So it is the .NET application, as I said. So you can do .NET restore and build and run. Then it will run your application. So it's that simple. I just did the .NET run because I already did the restore and build. And let's go to our website, which is this one. So let me make sure it's running. Yeah, it's running. So this is a simple application that shows all your products and the companies, right? And what it does is that, look at it. If I click this time slider, it shows you the data in the past, right? This is temporal tables usage, right? It's so nice, but it's so simple to implement using SQL Server. You just spend many, many hours to implement this logic in your application. So this is our demo and let's go back to our VS Code project. So to, okay, let me close it. To build and kind of work with SQL Server, you need two extensions in the Visual Studio Code. One is a C Shop extension and the other one is MS SQL extension. Right now we have over 9,500 downloads. We have released in the November 16. So thank you very much for everyone who downloaded and started using. Oh, it's our pop-up. We don't need to be reminded we're here. Exactly. So that's great. Our team is really excited that people are finding our tool useful for their day-to-day development work. So you keep going. SQL Scripts with IntelliSense. Ooh, that might, that would actually be faster and potentially more lightweight than using SQL Server Management Studio. If I just want to run some simple queries and see results. Yeah. That's what I'm saying. We are not recommending one or the other. Yeah. Now it is your choice. Now we have full power to see. If I just want to look at a C-Sharp file on the disk, I will load it in Visual Studio Code. Because I just want to look at the code, it comes up much faster. So even if you don't do your main development in Visual Studio Code, it's a really handy utility to have for times when you wanted to do things a bit faster. Actually, it can be anything. It can actually be used as a notepad. Yeah. So I don't. There's a markdown extension. So if you have to do markdown, I think it's your markdown editor of choice. Exactly. And then for anything like taking the text note, I use VS Code. Right. And for literally anything, I use VS Code nowadays. So it's great. Even our usual education team, who's producing the documentation, they use VS Code. Yeah. Cool. So that's great. It's simple. Just to go to search box in Visual Studio and type in msql. Then you will see that there are two extensions. VS Code-msql is deprecated. So this one is a Sanjay and Nagamagalam, is one of our PM in our team, and who actually made the prototype of msql extension. And we made the official version msql, which is the second one. So go install this one instead of VS Code-msql. We are going to unpublish VS Code-msql sometimes. So we just left it to have like a transition. Okay. All right. So those are two extensions that you need. Okay. So let's get to the real business, right? So if you go to the folder, Belgrade the product catalog demo, there is a set of scripts that you can help. So if you're application developer, you focus on the building, let's say the net core, sb.net coding and writing code for jQuery. But to test your application, you need to prepare your SQL Server instance and database all that kind of stuff. So these are the SQL scripts that set up your application database so that you can test it. Oh, one thing important is that as you see, I'm running everything on my Mac, right? One of the key, the user scenario that I want to point out before we continue is that there is a need for developers to do things all unlocally. For example, if you're using Mac, then you should be able to develop your application, develop your database and be able to test it. After that is all done, you can choose your production environment. It can be Azure SQL Database or any Cloud or Windows Linux, but you should be able to work your day-to-day job in Starbucks as well. So the key thing is that on Mac with the SQL Server, you can do that now. I'm running SQL Server Vnext on Docker container on Mac. So it's running. Right. So it's very easy. Let me go to docs.microsoft.com, and there's a SQL-Linux. Or you can just remember aka.ms, SQL Linux, if you type in, it will bring you to this page, and there is one nice icon that says Install. Just click it, and there are a bunch of getting started guides that we prepared before the November 16 release. One of the approaches is this one. So not only for the installation, it also has what you can do for development perspective, what you can do for management, what you can do for migration. If you already have let's say a database running on SQL Server on Windows, then you need to know how I can move the database from SQL Server on Windows to SQL Server on Linux. Right. So all those documents are done through like a step-by-step guide perspective, so it's really easy to follow. Okay. So same for the installation of SQL Server. We're on the Docker, that is the main topic that I want to do. To install SQL Server container, the image and the stored container, Docker container for SQL Server Linux, it's just running these two commands. So copy, paste, and write it in your terminal, then it will set you up. Only one thing that you need to remember is that, go to preference on the Docker, the preference page, and make sure the memory is at least four gigabytes. Okay. Because SQL Server container, Docker container requires minimum four gigabytes of memory. So this is something that you remember. I got this issue at the beginning and then Docker starts with the two gigabytes memory at the beginning. So Docker's got two. So this four gig is, that's not two for Docker plus four for SQL. So it's just a total, the Docker uses four gigabytes of memory for the container. If you're on your, say, Surface Pro 3 with eight gig of RAM, you've got four gigs left for whatever you're doing. Yeah. That's pretty optimized the solution. So I'm running this one. I'm also running parallel's VM stuff, and I never see any issue of performance of my Mac. Cool. Okay. So that's the initial setup. It's just a one-time setup, and now your MacBook is fully ready for your app and database development locally. You're not switching back and forth between others. That's nice. So you don't, if you just want to test locally against SQL Server, you don't have to install SQL Server Developer Edition, you don't have to install SQL Express, necessarily have that running. You can just do this and have full blown SQL Server running only when you need it, then turn it off when you're done. Right. So Docker container is also available for Windows as well. So you can do the same scenario on the Windows as well. Yeah. Cool. That's pretty cool. Technology. I'm in love as well. So that's the initial setup and we are fully ready. So now we can really go into the MS SQL extension capability. So as you saw, I already did the demo preparation for you to show the how app is working. So let's clean up and start from scratch so that you can see the whole end-to-end developer activity using VS Code. So what I'm doing is that on the editor, I opened up the clean up the SQL. I'm typing in SQL. These are snippets. So for most commonly used actions like drop database, create database, you don't have to remember all those syntax and stuff. You can just use SQL drop database here. Then it produces the snippet templates for you and you can type in product catalog. This is the name of the database and it just completes your template for dropping the database. This one will fail because we've been already using the database, and if there is a connection happening, then the dropping database fails. It has to be like a single user mode or there's no connection like that. So I added the command here. You just need to comment it. The main reason that I put it as a command is that it's dangerous. If you run it and drop accidentally your database, then it's bad thing happened. So to prevent it, I just intentionally put this alter database statement that changes your database to single user mode as a command. So I think one more time before you run it. So now I'm running it. On VS Code, the audience can be like the real VS Code, the developers, but there could be some people who's coming from SQL side. First time using VS Code because of MS SQL. So in VS Code, always the starting point is a control shift P to open up the command palette or f1 key. I prefer to use f1 key. So if I click f1 key and type in SQL, then it shows all the commands that the MS SQL extension provides. Going a little more detail, if you take a look at it, we wanted to increase the productivity in a way that which is a natural to the developers. So for VS Code, you just what is natural is using keyboard and using shortcuts, right? So that was the design. So f1 and SQL, then if you take a look at correctly, just typing two more words, it always selects exact command that you need. So we put the effort to design at this level to increase the productivity of the developer every single inch. So that's basically what we are doing. So let's go and then MS SQL Connect. Because there is no connection or connection definition before whatsoever, it starts with empty connection profile list, and it has a create connection profile. So by clicking it, it run you through like a command palette wizard like a flow. So it asks you question, what is server name? It's a local host and that is name, it's optional, I can just to go then it will select the default. Your name, I'm using this to say for now, type in the password. Now we ask you to save the password. Now for Mac, we save the password in the keychain. So we don't leave it in the clear text in any of your file if you choose to put that route and it's a secure. So for Windows, we use a secret store in Windows version. So that is what we do. So if you go yes and the profile name, let's just make it as a Docker. Okay, that will create it. So I will show you one more thing. SQL Connect, if you go to SQL Manage Connection Profile, there is a multiple sub tasks that can give you more the actions to manage your connection profile. One is the edit. One thing is, as you saw in the wizard, we only asked you four questions, server name, database name, username and password. But in the SQL Server Connection, Connection String can have many more stuff like what is the connection timeout, what is the security setting like an encrypt on or not, or the trust server certificate or not. So for those kind of stuff, you can just directly go to the edit menu in the connection profile management, and we added all those suggestions list for all the connection property strings. Even for the seasoned SQL developer, they may not remember all the connection profile and then know exactly what it does. So to help them, we added those one. So if you go to like an encrypt, then it puts the default value. So just the value for the encrypt property, and those are kind of a feature that we do. This one is saved in the user settings. It's only visible to you. Let's say if you have like a 50 connection strings, but you have to work on Mac, sometimes you have to connect from your other Windows desktop PC or Linux. What you can do is that just copy and paste it there. You don't have to go the create connection profile wizard 50 times whenever you switch it. So that's kind of a detail that we did design and implement for this one. So I just don't save it and continue. Okay. Now SQL EX, execute query, execute query, and delete the database. So let's double-check it. SQL use, SQL use, it's a use database command that first shows you what are the databases in your server. And if you want, you can switch the connection. So good. So we have cleaned up our demo setup. I'm just closing it. The first step is always, you have to create a database. And then in the database, we have to create the tables to procedures that your application need. So I opened up setup.sql and they're doing the same thing. So you connect because we have created our connection profile, now you can see that Docker shows up there. And since then, then you can just click that connection profile that will just make a connection to your servers. Okay. And now let's execute it. By the way, instead of using shortcut, I'm using this f1 at the command line, the command palette because it's a demo. I have a muscle memory, I just quickly pressed the shortcut. But if I do that, then nobody can see what's happening there, right? Magically, suddenly it's executing and all that kind of stuff. So that's one thing that I want to say, and by clicking it, it runs it. One thing that you can notice is that this is a message pane and there is a timestamp. And total execution time. Whenever we execute the tc call statement to SQL Server, what is important is the laps time and then time when it was started so that we can always measure the performance of the query. And to help, if there is any issue, then by clicking the line number, you see that in the editor, we highlight the corresponding batch block, right? So you can always navigate between the query results and editor in this way and you don't get lost, right? So now, let me show you SQL use database one more time. And now you see that product catalog database is created, right? So let's make a connection. So its connection is also successful. And the second one that I'm going to do is that the setting up the temporal table and stuff in the newly created database, right? So if I make a connection again, now you can see that. We only created, yeah. You have to keep connecting? It doesn't maintain the connection? It is editor based. So one thing that we are doing is that connection is editor session based. We actually thought about which one is more preferable, like maintaining global session for entire VS code. So whenever there's a new editor session opens up, we just inherit the same connection versus keep that the scope to editor based. Only one thing in SQL service is that you can open up many editor sessions with a different context. Let's say one editor you have a drop database that we just executed or delete from table statement. And you can think you're connected to your local test database. But accidentally it can happen that you're actually connected to your production. You run it, right? So those are kind of danger. So that's the way that we thought. And as an initial start, we made it as an editor session. And the connection session is kind of the same level. But we have a plan backlog item. If a user wants to go with the global session, we want to have a customizable option that you can set it. So instead of doing that, please inherit the connection from the global session. So that is one of the backlog items. So those are the suggestions and feedback we want to get. And MScool extension is fully open source. So you can come to the GitHub MScool extension project page. And you can see all the issues. You can see all our plans and suggestions and then even both what you want or that you can do. That's basically what we want to ask our users. So one thing that I want to tell you is that we only created Docker connection profile. But if you take a look at now, it is two, right? What's happening here is that whenever you make the connection to a database, we keep most recently used the connection history. And put it automatically in your list. That's cool. So you don't have to create new connection profile from product catalog, right? The original it was just default, we didn't specify database. But second one, we automatically added the connection to product catalog database. So that is the key feature that we added to make things much easier. So it's more like just one click, enter one click, enter kind of an operation in that perspective. So we made a connection here. So product catalog and I'm running, they call EX, that runs it. Okay, so basically this one created the SQL Server Database and they put all the data in the system history information in our database so that my application can use it again. So that's basically what developers would do, open query or write query and execute it and that's one. So going into, I'm sorry, I'm putting it here. So let's simulate what people do as a developer. So these are like my test script. I want to verify that the SQL statements and so procedure in my application is calling against my product catalog database is actually good in shape. So I have a test script. When you write the test script if you look at it, likewise this is a mess. Sorry, DBO, not connected. Okay, so there is a few seconds of delay to pull out the schema information. Now it is working, right? So whenever you connect the first time, there's a little bit of time to pull down the schema information to populate this suggestion list in IntelliSense. So now you can complete your query using IntelliSense. And then you can run your query. So now, when you saw the create database and the setup temporal SQL, you only saw messages, right? Because it was all DDL execution, there was no result set. Now when you actually run your business logic using SQL statement, query statement, then there are data that comes out, right? And I executed multiple select statements, so there are multiple ones. And one thing that is fun is that it's more than eight records. And you want to work on the result set. Then you can click this when it maximizes it, right? And you can work on it and reduce it. If you want to look at the message, you can even collapse and then open or collapse the message that you don't need. You can save those results. Yes, exactly. So let's go to company here. I'll just maximize it. I save all. Now you see two comments, save as CSV, save as JSON. Okay. And this one icon does the same thing. So save as JSON icon, if you click it. I name it company data.json. Yes. Very nice. And it produces JSON file or CSS file that you need. Okay, so this one completes the basic demo of what you can do is visual studio code for just the core features like writing, executing, and the view the result, and of course the save result. I will switch to, let's say, Windows 10, oh, it was on hold. I'm going to show you something more interesting. What's coming? Okay. Very soon. So probably when we publish this session, maybe the new upcoming feature may have been already released. So I don't know. So this is what's new in the extension? Yes, extension in the VS Code. And we are going to release in a week or two. So it'll be available. I switch it into our Windows. Now you can believe that it runs on multi-OS, right? All right, and let's do it. I made the demo script so that I can remember. So what I'm going to do here is that I'll get the query, and the result from a query from the company. And I want to add, simulate my apps, the logic that insert one more company data in the database. So that I can actually see what is the exact code that I need to write and if it works correctly, that I can simulate it in VS Code with MSQL extension. So I'm executing query. So we have three records here, right? And I will save all as JSON. So company, I'm just doing it again on Windows. Okay, now it is a three records. Okay, close it. Sorry, take that finish in. And what I'm going to do is that add this more. So I made it as a name, VS Toolbox, address, all that. So I go here, and this is my new JSON data here, test data code that I can just check in into my app project. So that's good. And then just to clean up the table, so that we can see the difference very easily. Okay, so there's no data. Now, I will show you one interesting thing. You're going to add that, you're going to add that as JSON instead of doing a traditional insert statement. Exactly, and I don't remember. I don't remember. So you're telling me I don't have to remember, I don't have to retype all the field names and I can just take this JSON piece. Slap it into the database. I don't believe it. I'll show you. But one thing is that I don't even remember exact syntax. So what I did was that, you see channel nine inserts from OpenJSON. It's a user-defined snippet. Okay. I copy the code from a sample documentation and pasted it here and created my own snippet. What you can do is that just to go to your preference, and there's a user snippets. It's a VS Code feature. VS Code has so many awesome features, one of them is a user snippets, and you can just select the SQL type. Then this page gets opened. What you need to do is that just put description, prefix is what will show up in your suggestion list. Your body is basically your syntax with just a quotation mark. That's it. I'll quote Simon. Then it will automatically show up in your editor as a snippet that you've seen. Now, it's not done. So one thing that we need to do is that declare the name. It's based on my snippet. There is a JSON data, which is a variable in the snippet template. I want to name it as a company as a variable name. I did that, then it changes all variable template to ad company. This is the where I want to put the JSON data in JSON format. But before that, insert it into company and then I have to put column list. This is another variable in my template. I will show you quickly here. There's a column list, there's a variable. But I don't know what you can do. What are the list columns that you have? Now, you have to pick that definition. Beautiful, isn't it? Wow. SSMS, SSDT didn't even have this feature. Now, it's not all. So I got to tell you that's one of the coolest things I've seen all year in this show. I'm telling you, that is top 10 coolest things we've shown on this show. Great. Well done. Thank you. So now, company order completion. Name, I don't even have to type all the stuff. Now, if you invented something that would copy them in automatically without me having to type, I'd put it number one on the list. I'm just going to settle for top 10. That's good. Suggest it. Great, isn't it? It's so easy. I didn't even know the syntax, but I could finish it. You don't have to go into the SQL Explorer, call it up, expand, expand, expand, look, right in line. Fantastic. The last one is width. This is specific to the JSON format. You need to provide the list with type. It's here. I just copy and paste it. Then I can just remove these guys. So this one, remove this one. Last one, we can just delete all at a time. Change all occurrence. Call that as a Visual Studio Code feature. You have to take that null out or do you leave that? Oh, thank you. You just debunked my code, right? If there is an issue, there is an error squiggly showing up. It just tells you all the way, oh, you have an issue. So that's how you can actually notice. Wait a second, Eric, you have a code issue. So you just did the code review, and let's go to company to JSON. What I do, control, just to select all, copy, go here, control V to copy, right? Then let me write, and then I will select to show you actually was executed, all right? That's so nice. Yes, this is very nice. Our engineering team has done this brilliant job, and I really want to thank them, and it's great. Just for fun, one more thing. I have application, one of the recommendation from SQL is that when you build your application, instead of writing query in your application directly, create a stop seizure for layered protection and then management, and use it. So if you want to debug and know what's inside of so procedure, Jobon built this application, so I don't even know what's inside, right? And it happens every day. Now, go to that finish, right? Right in the editor directly, you can do pick definition or go to, you just print it out in another editor, and you can debug it here. Fantastic. This is the new feature of coming up in a couple of weeks. Great. That's great. I will do one more demo before we wrap up this session. One is called the progressive rendering. I will explain it this way. Performance matters. It has to be fast, right? When in the tools side, when we talk about the performance, it's about response time and throughput time for query execution. So throughput time can be like two hours. If you have really simple query with a large data, it can take two hours. Response time means whenever there is the first row or first set of results is ready to be rendered, then it should be visible to users. That's response time, right? And SQL Server Engine has the same thing. So I will show you the difference between what we have and what we are going to release. So I'm going back to the Mac one, which is running the released version as of today in the VS Code Marketplace. So I'm going to execute it. So it's executing. What I did was that the wait for delay in each query statement so that they kind of simulate the long running query, right? And throughput time is over 12 seconds. So you have to wait entire time before you get that. Right. Now, take a look at the upcoming one. So I'm executing it. See, as soon as the result is coming out, we are rendering it. So Ben in our team has been working on this feature, and he's in the stage two. He's playing. So stage three is coming out. That means right now it is per result set. The result set is ready then we print out. In stage three, he will do row by row. Row by row. Right. Exactly. So that's another fantastic feature that we are releasing. Okay. So if you're doing row by row, how do you draw that on the screen? Do you have to continuously redraw the screen? You get these couple rows, then this row, then that row. Is that the way it's going to work? We need a band to answer the question. Okay. As a PM, it's a magic. Okay. What are you interested to see? All right. Something to look forward to. Sure. All right. So that's my demo. Cool. Fantastic. Give me one more second. A magical extension is open source. Yeah. It's open source. We don't even use any of the internal system to box tracking anything. We all use the GitHub repository project, VS Code-MSSQL. Okay. If you go there, you can see full transparency of seeing all the issues. Even our internal discussion, it's not internal. Everybody, every developer is on our team now, right? Because you can join us, and then you can see all that one. We also have a daily build, and we also have like a project plans. So even without watching this session, you can actually see what's coming in two weeks. So basically, that's an extension one, and everything I explained today is all here. We'll put up the links for all those new show notes. Yes, please. Don't forget, aka.ms, SQL Dev. If you're a SQL developer, this is the page to go. Very cool. Thanks so much. Okay. Very, very cool stuff. Hope you enjoyed that, and we will see you next time on Visual Studio Toolbox.